Два других ответа верны, но я думаю, что они упустили ваше намерение.Распространено объявлять свойство как доступное только для чтения в файле .h, так что код вне реализации класса не может его записать.Внутри файла .m вы хотите, чтобы он был перезаписан.Этот вид переопределения явно поддерживается .Тем не менее, вы должны поместить объявление как readwrite в расширение класса:
// In your .h file:
@interface MyClass : NSObject
@property (nonatomic, copy, readonly) NSString *myString;
@end
// In your .m file:
@interface MyClass () // Note the empty parentheses
@property (nonatomic, copy, readwrite) NSString *myString;
@end
Вам все равно нужно использовать self.myString = aString
или [self setMyString:aString]
вместо прямой записи в ivar, когда выделаю прямо сейчас.