2012-06-30 56 views
0

在我的頭文件我有:什麼變量名使用

IBOutlet UITextField * _userNameOrEmail; 
IBOutlet UITextField * _password; 



@property (retain) IBOutlet UITextField * userNameOrEmail; 
@property (retain) IBOutlet UITextField * password; 

我在執行我:

@synthesize userNameOrEmail=_userNameOrEmail, password=_password; 

當我進入我的筆尖文件,我可以拖動的UITextField,它給我的選項_userNameOrEmail和userNameOrEmail

哪一個我應該使用?

+0

使用_userNameOrEmail –

回答

3

這一行

@synthesize userNameOrEmail=_userNameOrEmail 

您聲明與支持IVAR _userNameOrEmail屬性userNameOrEmail。你做需要做的另一聲明是這樣的:

IBOutlet UITextField * _userNameOrEmail; 
IBOutlet UITextField * _password; 

您現在可以通過存取權限的_userNameOrEmail =後盾伊瓦爾或通過self.userNameOrEmail =財產。我建議您使用該屬性,因爲如果需要可以通過其他類訪問變量,它將爲您管理內存,您可以使用點符號....

+0

感謝您的好細節。 。 – jini

0

當前建議Objective-C 2.0的做法是使用與財產相同的名稱作爲伊娃。您可以選擇在@property聲明中分配不同的ivar,但默認情況下,屬性的合成訪問器將訪問具有與屬性相同名稱的ivar,這表明它們是您希望遵循的模式。

現在,Apple在「Coding Guidelines for Cocoa」中修改了2012-02-16之後,明確規定了以_開頭的實例變量的命名約定及其原因。

確保實例變量的名稱簡潔地描述存儲的屬性。通常,您不應該直接訪問實例變量,而應該使用訪問器方法(您可以直接在init和dealloc方法中訪問實例變量)。爲了幫助用下劃線(_)前到這個信號,前綴實例變量的名字 -