我在iOSU开发的iTunesU课程中观看精彩的Paul Haggerty(因为谁不需要刷新基础知识?)他说了一些我不知道的事情:
“我们永远不会访问下划线(_符号)变量”
然后他继续讨论如何使用@property声明变量,@synthesize variable = _variable
是编译器在后台生成的代码,以及setter和getter。基本上,代码永远不会出现在您的应用程序中。
在我迄今为止编写的所有iOS应用程序中,我总是在头文件中使用@property
声明我的变量,@synthesize VARIABLE_NAME = _VARIABLE_NAME;
自从观看讲座后,我现在很困惑我应该在我的代码中使用@synthesize
。
我应该使用属性声明吗?如果我在代码中使用合成声明,它会有什么区别?
由于Haggerty先生不使用它,那我为什么呢? (考虑到他是一个iOS半神)。我非常觉得做我一直在做的事情是不好的形式。
有人想澄清这个问题吗?
答案 0 :(得分:7)
Xcode 4.0 Developer Preview 4 Release Notes.添加属性的默认自动合成(iOS和64位OS X)。在编译器的实现部分中,您不需要@synthesize
指令来合成声明属性的访问器。
所以
@synthesize ivar = _ivar;
如果省略它,就完全相同。
答案 1 :(得分:2)
不再需要合成。这也包含在今年的WWDC会议中。只需使用属性。
答案 2 :(得分:2)
不包括“@synthesize VARIABLE_NAME = _VARIABLE_NAME”将完全像您实际包含它一样,因为如果您不添加任何内容,编译器将自动添加它。
答案 3 :(得分:2)
使用Xcode 4.5或更高版本。 IDE为您编写@synthesize
语句。
@synthesize
语句只为您写setter
和getter
。
,_variable_name
是即时变量。
variable_name
只是一种默认返回_variable_name
值的方法。
默认情况下使用variable = <Statement or value>. its calling the
setVarable_Name method to set the
_ variable_name`时。
希望它有所帮助。