1

当我将字符串附加到NSMutableStringusing时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:@"-"];零件不起作用?

4

1 回答 1

5

问题是由于copy您的财产的属性。当您为属性分配值时,它会创建一个副本。但是副本是使用copy而不是制作的,mutableCopy因此您实际上最终将 an 分配NSString给该属性而不是NSMutableString.

摆脱copy该属性或实现您自己的自定义“setter”方法,该方法调用mutableCopy.

于 2014-06-01T17:30:03.523 回答