Ошибка при использовании свойства 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,

Другие вопросы по тегам