为什么有些ivars有双下划线前缀?

时间:2011-09-20 02:10:30

标签: iphone syntax ivar

当XCode在Apple模板中创建合成语句时,您会看到如下内容:

@synthesize ivar=_ivar;

所以我得到了单个下划线,以及你如何命名ivars与属性不同,以确保你不会意外访问它们等等......

我刚刚开始了一个核心数据项目,在模板创建的语句中,我有:

@synthesize managedObjectContext=__managedObjectContext;

@synthesize managedObjectModel=__managedObjectModel;

@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

为什么核心数据相关的ivar名称有双重下划线?这只是一个Apple语法吗?不确定是否还有更多内容,如果这是我需要注意的事项 - Google不是很有帮助。

谢谢!

2 个答案:

答案 0 :(得分:4)

Objective C编译器将所有变量名称视为相同,因此双下划线仅仅是一种约定。但是,后面跟一个大写字母的双(或单)下划线保留供编译器使用。

另外,检查this问题的答案,它们比我能解释的更深入。

答案 1 :(得分:4)

前导双下划线应该专门保留给编译器和语言库。然而,Apple决定也将它们用于Core Data。我们凡人开发者不应该使用双重领先的下划线。