С помощью '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, но не обязательно. Точка, свойства и переменные экземпляра часто идут вместе, но различны.