加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 声明@synthesize时的单和双下划线差异

发布时间:2020-12-14 19:34:20 所属栏目:百科 来源:网络整理
导读:在最近的 Xcode 4.3项目模板中,一些@synthesze被声明为: @synthesize window = _window;@synthesize managedObjectContext = __managedObjectContext;@synthesize managedObjectModel = __managedObjectModel;@synthesize persistentStoreCoordinator = __p
在最近的 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,nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly,nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (strong,nonatomic) UINavigationController *navigationController;

解决方法

如果它们打算用在你自己的程序中,它们可能不应该使用双下划线.我希望这只是对编写该模板示例的人的疏忽.在实践中,它们不太可能导致任何问题.

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

All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读