2

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

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

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

到目前为止,在我编写的所有 iOS 应用程序中,我总是@property在我的头文件中声明我的变量,@synthesize VARIABLE_NAME = _VARIABLE_NAME;自从观看讲座以来,我现在对是否应该@synthesize在我的代码中使用感到困惑。

我应该只使用属性声明吗?如果我在代码中使用 synthesize 声明,它有什么不同(如果有的话)?

既然哈格蒂先生不使用它,那我为什么要使用它呢?(考虑到他是一个 iOS 半神)。我非常觉得做我一直在做的事情很糟糕。

有人愿意澄清这个问题吗?

4

4 回答 4

7

Xcode 4.0 开发者预览版 4 发行说明。添加属性的默认自动合成(iOS 和 64 位 OS X)。您不需要@synthesize编译器实现部分中的指令来合成声明属性的访问器。

所以

@synthesize ivar = _ivar;

如果您省略它,则完全相同。

于 2013-02-02T05:12:10.697 回答
2

不再需要合成。今年的 WWDC 会议也涵盖了这一点。只需使用属性。

于 2013-02-02T05:11:36.577 回答
2

不包括 "@synthesize VARIABLE_NAME = _VARIABLE_NAME" 将执行与实际包含它一样的操作,因为如果您不添加任何内容,编译器会自动添加它。

于 2013-02-02T05:11:39.167 回答
2

使用 Xcode 4.5 或更高版本。IDE@synthesize为您编写语句。

@synthesize声明只是为您编写setterand getter

_variable_name是即时变量。

variable_name是唯一一个_variable_name默认返回值的方法。

默认情况下使用variable = <Statement or value>. its calling thesetVarable_Name method to set the_variable_name` 时。

希望它有所帮助。

于 2013-02-02T05:16:31.640 回答