声明 @synthesize 时单下划线和双下划线的区别

2024-03-24

在最近的 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 保留标识符:

所有以下划线开头的标识符以及大写字母或另一个下划线始终保留以供任何使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

声明 @synthesize 时单下划线和双下划线的区别 的相关文章

随机推荐