在最新的Xcode 4.3项目模板中,一些@synthesze
声明为:
@synthesize window = _window;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;
@synthesize navigationController = _navigationController;
有些带有双下划线(
__
)作为前缀。为什么?与
readonly
属性有关系吗?@property (strong, nonatomic) UIWindow *window;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (strong, nonatomic) UINavigationController *navigationController;
最佳答案
如果它们打算在您自己的程序中使用,则可能不应该使用双下划线。我希望这只是模板示例编写者的疏忽。实际上,它们不太可能引起任何问题。
C标准保留所有以双下划线开头的标识符,以供实现自己使用。由于Objective-C是C的超集,因此您也不应该在Objective-C程序中使用这些标识符。从C规范的 7.1.3节开始,保留标识符:
关于objective-c - 声明@synthesize时的单双下划线区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9918567/