Ios интерфейс iVar vs Property

В файле .h, в чем разница между:

@interface ViewController : UIViewController
@property (strong, nonatomic) UIView* myView;

И

@interface ViewController : UIViewController{
    UIView* myView;
}

Ответ 1

Основное отличие состоит в том, что @property видна другим объектам, и к ним можно получить доступ, используя экземпляр вашего класса.

Вы можете использовать @synthesize в вашем файле реализации, чтобы автоматизировать функции определения детерминатора в вашей реализации.

Обновлено (после предложения @Graham Lee)

В соответствии с спецификатором видимости для вашей переменной экземпляра (@protected/@private/@public), ivar может использоваться в вашем файле реализации, подклассах или других классах. Неявное значение @protected, поэтому в вашем примере оно будет видимым для вашего файла реализации и подклассов.

Ответ 2

Первый - это объявление свойства, тогда как второе - только ivar. Свойство - это автоматическое объявление геттера и сеттера для ivar, но если нет ivar (как в первом примере), свойство также создаст ivar.