33

对不起,我是一个新手 iOS 开发人员,最近我听说 @synthesize 现在在某个版本的 Xcode 中是 @synthesize 并且编译器将自动合成和属性并将 _ 分配给私有变量。

我已经对此进行了测试:

没有@synthesize,您可以使用访问属性和私有字段

self.property_name = something;
_property_name = something; //(used in getter and setters)

使用@synthesize property_name,您可以使用访问属性和私有字段

self.property_name = something;
property_name = something;

我的问题是我们真的需要@synthesize 了吗?还是我错过了一个更大的故事?

4

2 回答 2

55

不,从 Xcode 4.4 开始,我们不需要这样做,它添加了一个名为 Default Synthesis Of Properties 的功能。

简而言之,它会自动生成:

@synthesize name = _name;
于 2013-03-25T01:11:42.223 回答
-3

除非你一直像我一样使用它,否则你仍然需要它,据我所知:

在.h中:

@property int32_t FwdID;

以 .m 为单位:

@synthesize FwdID;

类内用法:

FwdID = 0;

据我所知,如果你想让默认值为你工作,你必须输入 _FwdID = 0; 在代码中,这对我来说看起来很难看。

因此,如果您像我一样(打破了我假设的所有标准编码约定),您仍然需要使用 synthesize。

于 2015-02-25T17:04:42.630 回答