在合成属性时,我发现有人在做:
@synthesize myVar = _myVar;
什么是“_myVar”,这与简单地做的区别是:
@synthesize myVar;
最后,什么时候我应该更喜欢第一个解决方案而不是最后一个解决方案?
谢谢卢卡
在合成属性时,我发现有人在做:
@synthesize myVar = _myVar;
什么是“_myVar”,这与简单地做的区别是:
@synthesize myVar;
最后,什么时候我应该更喜欢第一个解决方案而不是最后一个解决方案?
谢谢卢卡
您_myVar
的示例中真正的内容是支持您的财产的 ivar 的名称。默认情况下,当您合成一个属性时,会为您创建一个同名的 ivar。因此,您可以使用您的属性通过 setter/getter 设置您的 ivar,或者_myVar
直接访问您的变量(当然绕过 KVC/KVO)。
编辑: 来自 Apple 的Cocoa 编码指南
...在许多情况下,当您使用声明的属性时,您还会合成相应的实例变量。
确保实例变量的名称简洁地描述了存储的属性。通常,您不应直接访问实例变量,而应使用访问器方法(您确实在 init 和 dealloc 方法中直接访问实例变量)。为了帮助表明这一点,请在实例变量名称前加上下划线 (_)...
如果你想在 setter 和 getter 中使用一些现有的数据成员,那么可以这样指定。
例如@synthesize personName=pName;
这样,我们可以根据我们的方便使用 pName 而不是 personName。
它是私有变量的名称。
在另一篇文章中查看我的答案:回答