fuz*_*oat 3 iphone cocoa-touch objective-c xcode3to4
我注意到,使用Xcode4 Apple更新了应用程序模板,以在实例变量之前包含下划线.
// Xcode4
@property (nonatomic, retain) IBOutlet UIWindow *window;
@synthesize window = _window;
Run Code Online (Sandbox Code Playgroud)
.
// Xcode3
@property (nonatomic, retain) IBOutlet UIWindow *window;
@synthesize window;
Run Code Online (Sandbox Code Playgroud)
我知道对于这方面的用处有不同的意见,但我只是好奇如果更新的模板在哪里:
这很有趣,因为在过去(iOS之前),Apple过去常常不鼓励使用下划线前缀来制作ivars:
避免使用下划线字符作为私有的前缀,特别是在方法中.Apple保留使用此约定.第三方使用可能导致名称空间冲突; 他们可能会无意中用自己的方法覆盖现有的私有方法,带来灾难性的后果.有关私有API遵循的约定的建议,请参阅"私有方法".
但是使用现代的Objective-C运行时,我相信子类中的ivar命名冲突已经消除,所以这不再是问题了.所以我认为这就是为什么他们默认使模板使用下划线前缀来匹配Apple的内部代码.