当我使用NSMutableString
将字符串附加到appendString:
时,我收到以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Attempt to mutate immutable object with appendString:'
我的代码是:
self.partialWord = [NSMutableString stringWithCapacity:self.wordLength];
for (int i=0; i<wordLength; i++) {
[self.partialWord appendString:@"-"];
}
在我的标题文件中:
@property (copy, nonatomic, readwrite) NSMutableString *partialWord;
我不明白为什么它说对象是不可变的,因为它是NSMutableString
。为什么[self.partialWord appendString:@"-"];
部分不起作用?
答案 0 :(得分:5)
问题是由于您商家的copy
属性造成的。为属性分配值时,它会创建一个副本。但该副本是使用copy
而不是mutableCopy
制作的,因此您实际上最终会为该属性分配NSString
而不是NSMutableString
。
摆脱属性上的copy
或实现您自己调用mutableCopy
的自定义“setter”方法。