理解 OC 中实例变量(Instance variables)和属性(property) 的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解 OC 中实例变量(Instance variables)和属性(property) 的区别相关的知识,希望对你有一定的参考价值。
参考技术A OC中的实例变量(Instance variables)正如其名,就是一个实例中的变量(也就是 Swift 中的属性),可以是公开的(pubilc),也可以是(private)的,其创建方式如下(注意,定义的时候放在 @interface 后的花括号里):注意,实例变量创建后是没有 getter 和 setter 方法的,如果想要给实例变量赋值,需要用"->"符号:
OC中的属性(property)区别我们理解的Swift中的属性,创建OC属性的时候,其实就是系统自动的在内部创建一个私有的实例变量+ getter + setter 。比如创建一个 NSString 类型的属性 name ,那OC会在幕后创建一个实例变量 _name 、一个 getter 方法 - (NSString*)name 和一个 setter 方法 - (void)setName:(NSString *)newName ,具体如下:
等价于
@synthesize 的作用就是把 name 属性的实例变量命名为 _name 。
创建属性的时候,系统默认是在属性前面加上下划线_的名称作为属性的实例变量,如果想要改变属性实例变量的名称,则用 @synthesize ,比如上面的例子,我们将 name 属性的实例变量改为 personName :
系统给属性默认创建的 getter 和 setter 方法让读写属性变得很容易,比如可以用"." 符号读写属性了:
当然也可以用 getter 和 setter 方法
还有一些规范需要注意:
以上是关于理解 OC 中实例变量(Instance variables)和属性(property) 的区别的主要内容,如果未能解决你的问题,请参考以下文章