Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS:在.h中声明属性时,什么';self.var和just-var的区别是什么?_Ios_Properties_Self - Fatal编程技术网

IOS:在.h中声明属性时,什么';self.var和just-var的区别是什么?

IOS:在.h中声明属性时,什么';self.var和just-var的区别是什么?,ios,properties,self,Ios,Properties,Self,可能重复: 我需要一个变量从一个视图传递到另一个视图,所以我在.h中创建了一个名为StringC的属性,并使用self.StringC访问它(这部分工作正常) 我还需要一些可以在整个视图中访问的阵列,但我使用的是不同的阵列 例如,我有lvLabelArray,我正在使用 self.lvLabelArray=[[NSMutableArray alloc]init]; [lvLabelArray addObject:LabelText]; 后来我用 self.lvLabelArray=[[NS

可能重复:

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

我还需要一些可以在整个视图中访问的阵列,但我使用的是不同的阵列

例如,我有lvLabelArray,我正在使用

self.lvLabelArray=[[NSMutableArray alloc]init];
[lvLabelArray addObject:LabelText];
后来我用

self.lvLabelArray=[[NSMutableArray alloc]init];
[lvLabelArray addObject:LabelText];
这和你的想法有区别吗

[self.lvLabelArray addObject:LabelText];
?


很抱歉,我不知道这些变量的术语。

有一个重要的区别

属性通过对象的getter或setter函数(视情况而定)。它允许您设置初始值、触发更新消息或其他任何内容

直接访问“attribute”会直接访问底层变量,因此可以忽略所有这些。因此,这肯定是不太可取的工作方式

避免这种混淆和简单错误的一种常见方法是重命名基础变量。使用“@synthesis attribute=\u attribute”,而不仅仅是“@synthesis attribute”。这将像以前一样创建getter和setter方法,但它们将在底层变量名为“\u attribute”时被删除。这意味着尝试使用不带“self”的“attribute”将触发编译器错误