Мне нравится смотреть на это с точки зрения простоты управления памятью и внешнего доступа.Если вам нужен внешний доступ к нему, очевидно, сделайте собственность.(Да облегчить управления памятью, если это легко, вы не испортите это, если не испортите это, это не станет ошибкой позже)
80%Когда у моего контроллера представления есть IBOutlets, и никто другой не обращается к ним, следовательно, ivars работают.Проблема в том, что когда вы не используете @property, назначенное значение все еще сохраняется .Тогда вам нужно помнить, чтобы выпустить его, даже если вы не сохранили его самостоятельно, что я счел нелогичным.
По этой причине я обычно использую @property (assign) для тех, которыми я не будуизменяя и @property (сохраняй) для всего остального, и никогда не объявляй IBOutlets напрямую как ivars.
Пример:
@interface something : NSObject {
//This one needs to be RELEASED then set to nil in both viewDidUnload, and dealloc.
IBOutlet UILabel * myLabel;
//also cannot be accessed outside of "something" class (technically it can, but don't do that)
//I NEVER declare my outlets this way.
}
//This one can just be set to nil in viewDidUnload and dealloc
@property (nonatomic, retain) UILabel * myOtherLabel;
//it can also be accessed from mySomething.myOtherLabel by any other class.
//This one just works. I don't own it, the view owns it, so I don't retain/release.
@property (nonatomic, assign) UILabel * myOtherOtherLabel;
//It also provides access to outsiders.
//I wouldn't recommend using this type if you want to change the value though.