我开始了一个小的Xcode项目来调查NSMutableString
属性应该是copy
还是retain
。我声明我与copy
属性属性:试图使用复制的NSMutableString属性导致异常
@property (nonatomic,copy) NSMutableString *stringA;
然后初始化它为self.stringA = [NSMutableString new];
终于尝试设置字符串[stringA setString:@"A"];
。
但是程序给出,
“终止应用程序由于未捕获的异常‘NSInvalidArgumentException’,理由是:‘试图改变一个不可改变的对象,具有了setString:’”
是因为所产生的字符串是NSString
?这是否意味着我应该使用retain
属性和NSString
属性使用copy
来声明我的NSMutableString
属性?
你几乎肯定不希望可变字符串作为一个属性在第一个地方;至少,没有一个暴露为API。 – bbum 2012-08-16 18:02:05
我的回答太多了:http://stackoverflow.com/questions/4995254/nsmutablestring-as-retain-copy/5004019#5004019 – justin 2012-08-16 18:03:01
对NSStrings使用'copy'毫无意义。 – 2012-08-16 18:03:06