在ios应用程序中使用@synthesize

时间:2013-02-02 04:52:49

标签: ios objective-c

我在iOSU开发的iTunesU课程中观看精彩的Paul Haggerty(因为谁不需要刷新基础知识?)他说了一些我不知道的事情:

  

“我们永远不会访问下划线(_符号)变量”

然后他继续讨论如何使用@property声明变量,@synthesize variable = _variable是编译器在后台生成的代码,以及setter和getter。基本上,代码永远不会出现在您的应用程序中。

在我迄今为止编写的所有iOS应用程序中,我总是在头文件中使用@property声明我的变量,@synthesize VARIABLE_NAME = _VARIABLE_NAME;自从观看讲座后,我现在很困惑我应该在我的代码中使用@synthesize

我应该使用属性声明吗?如果我在代码中使用合成声明,它会有什么区别?

由于Haggerty先生不使用它,那我为什么呢? (考虑到他是一个iOS半神)。我非常觉得做我一直在做的事情是不好的形式。

有人想澄清这个问题吗?

4 个答案:

答案 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语句只为您写settergetter

_variable_name是即时变量。

variable_name只是一种默认返回_variable_name值的方法。

默认情况下使用variable = <Statement or value>. its calling the setVarable_Name method to set the _ variable_name`时。

希望它有所帮助。