【发布时间】:2012-08-20 21:24:28
【问题描述】:
我可以轻松地创建一个普通的NSString:
NSString *string = @"string value"; // Case 1
有可能做这样的事情吗?
NSMutableString *mutableString = @"mutableString value"; // Case 2
【问题讨论】:
标签: objective-c cocoa nsmutablestring
我可以轻松地创建一个普通的NSString:
NSString *string = @"string value"; // Case 1
有可能做这样的事情吗?
NSMutableString *mutableString = @"mutableString value"; // Case 2
【问题讨论】:
标签: objective-c cocoa nsmutablestring
您可以像其他一些答案中提到的那样初始化字符串,但是对于像这样的常量字符串,我更喜欢发送-mutableCopy 消息:
NSString* string = @"string value";
NSMutableString* mutableString = [@"mutableString value" mutableCopy];
这对我来说很容易阅读,但这是风格偏好的问题。
【讨论】:
mutableString,它没有为NSString 定义。您可以发送mutableCopy,这是一种所有权方法,因为它的消息名称中有copy。如果您不使用 ARC,您将负责释放 -mutableCopy 消息返回的字符串。
种类:
NSMutableString *mutableString = [NSMutableString stringWithString:@"mutableString value"];
【讨论】:
案例 2 有效,但不创建可变字符串;它只是将NSString 放入NSMutableString 指针中。该对象仍然是一个常量文字字符串,向它发送类似appendString: 的内容会导致运行时错误。
您需要通过stringWithString: 或alloc 后跟initWithString: 分配一个新的NSMutableString。如果您愿意,也可以创建一个空字符串,然后使用setString:。
【讨论】: