我刚刚继承了一个iOS项目,并且对ivars和属性的分配方式有一个疑问。
在这个项目中,ivar的命名类似于属性,但以下划线开头。然后,当属性被综合时,它是这样做的
@synthesize property = _ivar;我觉得这有点奇怪。我之前只做过一个iOS项目,但是当我在做的时候,ivar和property的名字是一样的。然后我简单地合成这个属性,所有的东西都很棒。
我遗漏了什么?
发布于 2012-12-05 20:29:41
在开发人员应该引用self.property的时候,使用_var表单来防止意外引用变量已经成为一种惯例。现在已经确定,使用最新的工具,您可以完全删除@synthesize行,并自动模拟@synthesize x = _x;。
发布于 2012-12-05 20:33:08
这种做法强制您使用属性调用和设置iVars。如果你想使用iVar,你可以通过_iVar调用它,否则就不可能直接调用iVar,而不会错误地使用属性。它会显示错误,并且会提醒你,哦,我需要把self。
发布于 2012-12-05 21:26:49
在最新版本的XCode中,你不需要合成,它会为你合成。但还是要加下划线。
但是,您可以通过将其声明为@synthesize property=property;或@synthesize property;来覆盖它,甚至您也会意识到,您可以为它指定任何其他名称@synthesize property=myproperty;
然而,最初它只是一个风格问题,就像使用变量名称和动作名称一样,例如numberArray,nameTextField,cancelButton,但现在它很少使用,人们被要求分别命名数字,名称,取消。
但我建议大家遵循苹果的指导方针来使用_property。
https://stackoverflow.com/questions/13723202
复制相似问题