IOS:在.h中声明属性时,self.var和var之间有什么区别?

时间:2012-08-10 18:44:41

标签: ios properties self

  

可能重复:
  Objective-C - When to use 'self'

我需要一个变量从一个视图传递到另一个视图,所以我在.h中创建了一个名为StringC的属性,并使用self.StringC(该部分工作)访问它。

我还需要一些可在整个视图中访问的数组,但我使用的方式不同。

例如我有lvLabelArray并且我正在使用

self.lvLabelArray=[[NSMutableArray alloc]init];

然后我正在使用

[lvLabelArray addObject:LabelText];

它和

之间有区别吗?
[self.lvLabelArray addObject:LabelText];

抱歉,我不知道这些变量的条款。

1 个答案:

答案 0 :(得分:1)

那里有一个重要的区别。

self.attribute会根据需要遍历对象的getter或setter函数。这允许您设置初始值,触发更新消息或其他任何内容。

直接访问“属性”会直接转到底层变量,因此您可以绕过所有这些。因此,它绝对是不太可取的工作方式。

避免这种混淆和普通错误的常用方法是重命名基础变量。而不只是“@synthesize属性”,使用“@synthesize attribute = _attribute”。这将像以前一样创建getter和setter方法,但它们将底层变量命名为“_attribute”。这意味着尝试使用“属性”而不使用“self”将触发编译器错误。