声明@synthesize时单引号和双引号的区别

ohh*_*hho 6 xcode objective-c

在最近的Xcode 4.3项目模板中,一些@synthesze被声明为:

@synthesize window = _window;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;
@synthesize navigationController = _navigationController;
Run Code Online (Sandbox Code Playgroud)

有些带有双下划线(__)作为前缀.为什么?

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;
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 3

如果它们打算在您自己的程序中使用,它们可能不应该使用双下划线。我希望这只是编写该模板示例的人的疏忽。实际上,它们不太可能造成任何问题。

C 标准保留所有以双下划线开头的标识符供实现自己使用。由于 Objective-C 是 C 的超集,因此您也不应该在 Objective-C 程序中使用这些标识符。来自 C 规范,第7.1.3 节保留标识符

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