@synthesize和@dynamic的区别和应用环境

@dynamic的意思是动态绑定一个属性的实现,直白的说,就是告诉编译器这个属性不用你去做任何操作,完全由程序员自己来完成实现,包括getter,setter方法。

@synthesize的意思是编译器自动生成相应代码,除非程序员自己已经实现了。

这两者的应用环境:

一般情况下,我们通常会用@synthesize来完成相关的属性操作,这样我们不写get和set方法完全没问题,因为编译时编译器默认已经生成了一套get和set方法。

@dynamic最常用的地方是类别里添加属性操作。都知道,在category里面不能添加属性。当我们有这个需求时,我们必须通过运行时runtime来完成,这时编译器不会自动给我们生成get和set方法,我们就需要自己来完成实现。这时我们就需要告诉编译器这个方法我自己去实现,这个时候需要给编译器一个标记@dynamic。然后我们再通过runtime的objc_setAssociatedObject/objc_getAssociatedObject来完成属性的get和set实现。OK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值