Xcode4模板现在在iVars上使用下划线?

时间:2011-05-26 13:49:52

标签: iphone objective-c cocoa-touch xcode3to4

我注意到,使用Xcode4 Apple已经更新了应用程序模板,以便在实例变量之前包含下划线。

// Xcode4
@property (nonatomic, retain) IBOutlet UIWindow *window;
@synthesize window = _window;

// Xcode3
@property (nonatomic, retain) IBOutlet UIWindow *window;
@synthesize window;

我知道usefulness对此有不同的看法,但我很好奇,如果更新的模板在哪里:

  • (1)突出新的最佳实践。
  • (2)展示Apple如何处理事情,但这意味着你以旧的方式去做。
  • (3)只是个人品味,没关系。

1 个答案:

答案 0 :(得分:6)

这很有趣,因为在过去(iOS之前),Apple曾经discourage the use of underscore prefixes for ivars

  

避免使用下划线字符作为私有的前缀,尤其是在方法中。 Apple保留使用此约定。第三方使用可能导致名称空间冲突;他们可能会无意中用自己的方法覆盖现有的私有方法,带来灾难性的后果。有关私有API遵循的约定的建议,请参阅“私有方法”。

但是使用现代的Objective-C运行时,我相信子类中的ivar命名冲突已经消除,所以这不再是问题了。所以我认为这就是为什么他们默认使模板使用下划线前缀,以匹配Apple内部代码的样子。