Iphone _var和self.var之间的差异
随着所有这些新的ARC内容(不属于NDA…)的问世,似乎处理属性的默认方法是在实现文件中显式地设置不带和ivar的属性,直到使用以下内容将其合成:Iphone _var和self.var之间的差异,iphone,objective-c,automatic-ref-counting,Iphone,Objective C,Automatic Ref Counting,随着所有这些新的ARC内容(不属于NDA…)的问世,似乎处理属性的默认方法是在实现文件中显式地设置不带和ivar的属性,直到使用以下内容将其合成: @synthesize var = _var; 设置变量的最佳实践是什么?我知道var和self.var之间的区别在于self.var使用点表示法,并使用var的setter方法 \u var是否等同于在头文件中设置它,就像在好时光一样?在所有内容前面加下划线的做法从何而来 \u var只是实例变量的一个不同名称(大概是为了避免在打算使用访问器时意
@synthesize var = _var;
设置变量的最佳实践是什么?我知道var
和self.var
之间的区别在于self.var
使用点表示法,并使用var的setter方法
\u var
是否等同于在头文件中设置它,就像在好时光一样?在所有内容前面加下划线的做法从何而来 \u var
只是实例变量的一个不同名称(大概是为了避免在打算使用访问器时意外地直接访问它)。除了作为有效的ivar名称之外,它在语言中没有任何特殊意义。当您定义@属性时,例如:@属性(非原子,强)NSString*var
,Objective-C2.0及更高版本,自2012年起,自动合成该属性以创建三个内容:
- 基础实例变量
NSString*\u var
- 获取基础实例变量的方法:
-(NSString*)var{}
- 用于设置基础实例变量的方法:
-(void)setVar:(NSString*)newVar{}
一般来说,直接访问或设置底层实例变量不是一个好的做法,因为会弄乱KVO并绕过可能已放入getter或setter方法中的副作用 苹果是否明确表示ARC不属于保密协议?我看到的唯一一个公开提及它的地方是WWDC幻灯片中的starfield…@BoltClock:它出现在iOS 5的公开宣传页面上,而LLVM项目已经发布了关于它的冗长文档。在Lion或iOS 5上使用它的具体细节可能在保密协议下,但关于它是什么以及它做什么的一般概念是公开信息。另外:@Chuck:谢谢你的澄清@雅各布:还有链接。这篇文章()明确指出“[ARC]可以公开讨论”