答:
1)、@property 的本质是:
@property = ivar + getter + setter
翻译出来就是:
属性(property)等于实例变量(ivar)加上存取方法(getter和setter,实例变量用于存储数据,而存取方法用来读取写入该实例变量的数据有swift开发经验的人对这个感触应该表较深(存储属性和计算属性)
编译器会自动为@property添加实例变量和存取方法,当你重写一个存取方法的时候不用手动写实例变量:@synthesize name = _name;
,但是当你重写setter和getter方法时,你需要添加这行代码才能通过编译。
进阶:
property在runtime中是objc_property_t定义如下:
typedef struct objc_property