Ответ 1
Я предполагаю, что вы используете ARC.
В ARC, квалификация собственности на свойство должна соответствовать переменной экземпляра (ivar). Так, например, если вы говорите, что свойство "сильное", тогда ивар должен быть сильным.
В вашем случае вы говорите, что свойство "присваивает", что является таким же, как unsafe_unretained. Другими словами, это свойство не поддерживает права собственности на установленную NSString. Он просто копирует указатель NSString *, и если NSString уходит, он исчезает, и указатель уже недействителен.
Итак, если вы это сделаете, ivar также должен быть помечен __unsafe_unretained для соответствия (если вы ожидаете, что компилятор будет @synthesize для вас)
ИЛИ вы можете просто опустить объявление ivar и просто позволить компилятору сделать это для вас. Вот так:
@interface Movie : NSObject
@property(assign) NSString *title;
@property(assign) int rating;
@property(assign) int year;
@end
Надеюсь, что это поможет.