首页 > 代码库 > iOS: 了解下 XCode 曾用过的编译器
iOS: 了解下 XCode 曾用过的编译器
之前聊到@property 的用法时,曾提到@Property 的变化是因XCode的变更引起的, 究其根本原因, 是XCode所用编译器发生变化造成的。
在XCode4之前,Apple 所用的编译器是 GNU C Compiler (简称 GCC)。 自XCode4 后, Apple 将XCode的编译器改为 Low Level Virtual Machine (LLVM)。
在GCC编译器时代, 声明一个@property时,必须为这个property创建一个实例变量(instance variable);
而在LLVM时代,不一定非得为这个@property创建实例变量, 当LLVM没有找到这个property对应的实例变量时,会自动地为它创建一个。这个在后台自动创建的实例变量,与@property 声明的变量,区别仅差一个下划线 (_)。
代码示例: @property (copy, nonatomic) NSString *myName;
默认隐藏创建的实例变量为: _myName; 你直接调用这个_myName 实例变量, 是完全可用的 。
比如: 在.m 文件中,进行以下操作: _myName = @"This is my name"; 等同于 self.myName= @"This is my name";
小结:
了解下 Xcode的编译器历史,有助于理解为什么Xcode 中的某些语法经常变来变去。 @Property的变化是其中之一。类似变化有: 在基于storyboard 创建的 tableview 中,自Xcode4 之后, 也无需判断可重用的cell 是否为空了。
iOS: 了解下 XCode 曾用过的编译器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。