1

考虑以下代码:

@interface TestClass ()

@property NSString *privateProperty;

@end

现在,据我所知,要让编译器也创建访问器,我必须在@implement-part 中添加@synthesize 指令。

而且,如果不添加指令,以下消息有效:

[self setPrivateProperty:@"foo"];

据我了解,这应该会导致向我解释选择器未知的错误。为什么这个 setter(我认为也是 getter)仍然存在?

4

3 回答 3

2

从 xcode 4.5 开始,所有属性都将自动合成。

于 2012-12-23T17:49:25.710 回答
1

@property声明声明了 getter 和 setter 方法的存在。该@synthesize声明创建了这些方法的实现。

在 Xcode 4.5 之前,您会因为忽略@synthesize和运行时崩溃而收到编译器警告 - 两者都是由于您隐式声明的方法没有实现引起的。

从 Xcode 4.5 开始,方法的实现是自动合成的,除非您另外指定 ( @dynamic)。

于 2012-12-23T17:56:57.670 回答
0

这是 XCode 最新版本中引入的一个新功能:它自动合成属性,创建一个 _propertyName ivar 来存储它。

于 2012-12-23T17:49:40.190 回答