Intereting Posts
Что значит иметь фигурные скобки внутри метода? Уведомления о местонахождении не вызывают в режиме приостановки iphone – xmpp тайм-аут сообщения, связанный с нарушением списка чатов Какую ценность нужно передать .?http://maps.google.com/maps/geo?q=%@&output=csv Связь в синтаксическом анализе Как получить все месяцы года в определенном формате Вызов drawInRect на образ UIImageView: какой прямоугольник использовать? Gap Above Bottom Tab Bar – встроенный навигационный контроллер + встроенный TableViewController как сохранить содержимое uitextview в виде таблицы CollectionView замерзает, когда высота не фиксирована IOS iOS TwitVid SDK не отправляет запрос Unity5.2.2 + Parse1.6.2 + iOS9, RegistrationAsync вызывает EXC_BAD_ACCESS на iPhone Приложение Делегат приложения: didReceiveLocalNotification: не вызывается Как управлять подключением сокетов в веб-приложении iPhone, использующем сервер node.js? : Неопределенные символы для архитектуры i386:

С помощью 'variable' vs '_variable'?

Возможный дубликат:
Как подчеркивается символ подчеркивания перед переменной в классе цели-c какао?

В настоящее время я изучаю Objective-C, и я следую руководству, которое использует переменные немного забавно (по крайней мере для меня!).

В основном переменные класса объявляются следующим образом:

@interface .. { UITextField *_titleField; UIImageView *_imageView; } @property (retain) IBOutlet UITextField *titleField; @property (retain) IBOutlet UIImageView *imageView; 

и затем синтезируется следующим образом:

 @synthesize titleField = _titleField; @synthesize imageView = _imageView; 

Итак, в основном, зачем это?

titleField – это синтезированное свойство, а _titleField – это поле поддержки для него.

Возможно, http://mutelight.org/articles/the-objective-c-retain-property-pattern поможет вам лучше понять его

Часто люди используют символ _ как маркер для переменной экземпляра (ака на других языках «поле», или «член» и т. Д.). Некоторые люди помещают знак подчеркивания после имени переменной, некоторые люди ставят его раньше, некоторые люди вообще не используют его, некоторые люди используют разные префиксы. Идея состоит в том, что она помогает вам сразу разглядеть, что такое переменные экземпляра, а какие нет.

Конечно, если вы решите назвать свои переменные экземпляра определенным образом, но все же хотите, чтобы ваши свойства имели «нормальные» имена, вам нужно сопоставить «нормальное» имя с именем «имя экземпляра».

Свойство является всего лишь маркером для пары методов – «foo» и «setFoo» (если только свойство не является readonly, и в этом случае только «foo» будет синтезироваться). Переменная (те, которые являются экземплярами, а не переменными класса, BTW) является фактическим хранилищем памяти. Свойства могут быть связаны с хранилищем памяти – это то, что делает @synthesize, но не обязательно. Точка, свойства и переменные экземпляра часто идут вместе, но различны.