招聘靠谱程序员系列:6 @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的?

本文探讨了Objective-C中@property的本质,它包括实例变量(ivar)和存取方法(getter、setter)。@property的实现涉及到编译器的自动合成,会为属性创建对应的ivar和存取方法。在runtime层面,property表现为objc_property_t结构体,包含了属性的名称和特性。此外,编译器在编译期间自动向类中添加实例变量和方法,通过对ivar_list、method_list和属性列表的修改来实现属性的功能。
摘要由CSDN通过智能技术生成

答:

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值