Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone _var和self.var之间的差异_Iphone_Objective C_Automatic Ref Counting - Fatal编程技术网

Iphone _var和self.var之间的差异

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只是实例变量的一个不同名称(大概是为了避免在打算使用访问器时意

随着所有这些新的ARC内容(不属于NDA…)的问世,似乎处理属性的默认方法是在实现文件中显式地设置不带和ivar的属性,直到使用以下内容将其合成:

@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]可以公开讨论”