3

当我查看 iOS 5 开发人员库时,它说我必须为我创建的每个变量包含访问器方法。但是,当我输入

@property (weak, nonatomic) NSString *userName;

但是,我没有看到任何错误说我需要“getter”和“setter”。难道我做错了什么?

4

2 回答 2

2

Xcode 4.4 中的一个新功能是,如果您自己不这样做,它会自动合成属性,如下所述

对于未实现的@properties,编译器默认自动调用@synthesize。

于 2012-09-02T22:21:02.897 回答
2

您不会收到有关需要“getter”和“setter”的消息,因为当编译器“合成”该属性时,会为您创建这些访问器方法。您不必担心它们。当编译器遇到@synthesize指令时(在 Xcode 4.4 中,甚至不再需要),您的访问器方法将为您创建。

这在 Apple 的The Objective-C Programming Language的声明属性部分进行了讨论。

顺便说一句,当您说您看到“必须为每个变量包含访问器方法”这一事实时,我假设您是在谈论在特定上下文中需要这样做。这当然不是 iOS 应用程序中所有变量的一般要求。有时它们很有用。并且有一些 iOS 功能需要它们。但这不是一揽子规则。

于 2012-09-03T02:24:24.050 回答