2012-08-10 105 views
-1

可能重复:
Objective-C - When to use 'self'IOS:在.h中声明属性在self.var和just var之间有什么区别?

我需要一个变量以从一个视图向另一个传递所以由在.H称为StringC财产,并使用self.StringC访问它(那部分工作)。

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

比如我有lvLabelArray和我使用

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

再后来我用

[lvLabelArray addObject:LabelText]; 

是否有和

[self.lvLabelArray addObject:LabelText]; 

之间的差异?

对不起,我不知道这些变量的条款。

回答

1

那里有一个重要的区别。

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

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

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

相关问题