随着所有这些新的ARC内容(不属于NDA ......)的出现,处理属性的默认设置似乎是在实现文件中明确设置属性而不是ivar,直到你用类似的东西合成它:
@synthesize var = _var;
设置变量的最佳做法是什么?我知道var
和self.var
之间的区别在于self.var
使用点表示法并使用var的setter方法。
_var
是否相当于在头文件中设置它,就像在好日子里一样?那些以下划线表示所有内容的做法来自哪里?
答案 0 :(得分:2)
_var
只是实例变量的另一个名称(可能是因为当您打算使用访问器时,不会意外地直接访问它)。除了作为有效的ivar名称之外,它在语言中没有任何特殊含义。
答案 1 :(得分:1)
自动定义@property
类似:@property (nonatomic, strong) NSString *var;
,Objective-C 2.0及更高版本,截至2012年,@synthesize
该属性可创建三件事:
NSString *_var
。-(NSString *)var {}
-(void)setVar:(NSString *)newVar {}
通常,直接访问或设置底层实例变量不是好习惯,因为它会弄乱KVO并绕过可能放入getter或setter方法的副作用。