为什么Cocoa-Touch类ivars具有领先的下划线字符?

时间:2010-08-23 00:34:46

标签: iphone cocoa-touch naming-conventions cocoa-design-patterns

这个惯例有什么目的吗?

2 个答案:

答案 0 :(得分:2)

有些开发人员通过以下方法使用以下“隐藏”ivars的惯例:

@interface

@private
NSString *_myString
@property (nonatomic, retain) NSString *myString;

@implementation
@synthesize myString = _myString.

这样做是禁止通过属性myString强制所有访问来直接访问ivar。它是一种隐藏类内部并遵循面向对象的封装原则的方法。

答案 1 :(得分:0)

根据{{​​3}}:

,Apple喜欢使用下划线来表示“私密”
  

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

根据Coding Guidelines for Cocoa保留以下划线开头的方法名称(这意味着即使您不使用Cocoa,它们也会被保留):

  

以“_”开头的方法名称(单个下划线字符)保留供Apple使用。

此外,C / C ++约定是(通常)为实现保留前导下划线。很多人误解了这一点,并使用_表示“私人”;导致_FooLog()调用在我们的大量代码库中激增,即使它调用未定义的行为。

这样做的唯一原因是不鼓励在自己的班级中直接进行ivar访问。使用@private阻止来自其他课程的ivar访问。