当我查看 iOS 5 开发人员库时,它说我必须为我创建的每个变量包含访问器方法。但是,当我输入
@property (weak, nonatomic) NSString *userName;
但是,我没有看到任何错误说我需要“getter”和“setter”。难道我做错了什么?
Xcode 4.4 中的一个新功能是,如果您自己不这样做,它会自动合成属性,如下所述:
对于未实现的@properties,编译器默认自动调用@synthesize。
您不会收到有关需要“getter”和“setter”的消息,因为当编译器“合成”该属性时,会为您创建这些访问器方法。您不必担心它们。当编译器遇到@synthesize
指令时(在 Xcode 4.4 中,甚至不再需要),您的访问器方法将为您创建。
这在 Apple 的The Objective-C Programming Language的声明属性部分进行了讨论。
顺便说一句,当您说您看到“必须为每个变量包含访问器方法”这一事实时,我假设您是在谈论在特定上下文中需要这样做。这当然不是 iOS 应用程序中所有变量的一般要求。有时它们很有用。并且有一些 iOS 功能需要它们。但这不是一揽子规则。