0

在我的头文件中,我有:

IBOutlet UITextField * _userNameOrEmail; 
IBOutlet UITextField * _password; 



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

在我的实现中,我有:

@synthesize userNameOrEmail=_userNameOrEmail, password=_password;

当我进入我的 nib 文件时,我可以拖动 UITextField,它为我提供了 _userNameOrEmail 和 userNameOrEmail 的选项

我应该使用哪一个?

4

2 回答 2

3

有了这条线

@synthesize userNameOrEmail=_userNameOrEmail

您正在使用支持 iVar _userNameOrEmail 声明属性 userNameOrEmail。你不需要这样做另一个声明:

IBOutlet UITextField * _userNameOrEmail; 
IBOutlet UITextField * _password; 

您现在可以通过 访问支持 iVar_userNameOrEmail =或属性self.userNameOrEmail =。我建议您使用该属性,因为如果需要,您可以通过其他类访问该变量,它会为您管理内存,您可以使用点符号....

于 2012-06-30T18:43:49.787 回答
0

当前建议的 Objective-C 2.0 实践是为 ivar 使用与属性相同的名称。您可以选择在@property声明中分配不同的 ivar,但默认情况下,属性的合成访问器将访问与属性同名的 ivar,这表明这是他们希望您遵循的模式。

2012-02-16 修订后, Apple 在“ Coding Guidelines for Cocoa ”中明确说明了以 _ 为前缀的实例变量的命名约定,并说明了原因。

确保实例变量的名称简洁地描述了存储的属性。通常,您不应直接访问实例变量,而应使用访问器方法(您确实在 init 和 dealloc 方法中直接访问实例变量)。为了帮助表明这一点,请在实例变量名称前加上下划线 (_),例如 -

于 2012-06-30T18:42:00.337 回答