Ошибка при использовании свойства NSMutableString "Попытка изменить неизменяемый объект с appendString:"
Когда я добавить строку в 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:@"-"];
часть не работает?
1 ответ
Решение
Проблема связана с copy
атрибут на вашей собственности. Когда вы назначаете значение свойству, оно создает копию. Но копия сделана с copy
и не mutableCopy
так что вы на самом деле в конечном итоге назначая NSString
в собственность, а не NSMutableString
,
Избавляться от copy
на свойстве или реализовать свой собственный метод "setter", который вызывает mutableCopy
,