我需要一个变量从一个视图传递到另一个视图,所以我在.h中创建了一个名为StringC的属性,并使用self.StringC(该部分工作)访问它。
我还需要一些可在整个视图中访问的数组,但我使用的方式不同。
例如我有lvLabelArray并且我正在使用
self.lvLabelArray=[[NSMutableArray alloc]init];
然后我正在使用
[lvLabelArray addObject:LabelText];
它和
之间有区别吗?[self.lvLabelArray addObject:LabelText];
抱歉,我不知道这些变量的条款。
答案 0 :(得分:1)
那里有一个重要的区别。
self.attribute会根据需要遍历对象的getter或setter函数。这允许您设置初始值,触发更新消息或其他任何内容。
直接访问“属性”会直接转到底层变量,因此您可以绕过所有这些。因此,它绝对是不太可取的工作方式。
避免这种混淆和普通错误的常用方法是重命名基础变量。而不只是“@synthesize属性”,使用“@synthesize attribute = _attribute”。这将像以前一样创建getter和setter方法,但它们将底层变量命名为“_attribute”。这意味着尝试使用“属性”而不使用“self”将触发编译器错误。