Effetive Objective - C 1.Objective 9

本文详细介绍了Objective-C运行时的重要概念,包括类簇、对象关联、objc_msgsend及其变体等。深入探讨了如何利用这些机制进行底层操作,并解释了消息传递的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类簇 : 可以把多个类的复杂实现 隐藏到一个类的借口之下


对象关联 :

objc_setAssociatedObject ( 对象  键   值   内存语义

关联某对象的值  到对象

objc_getAssociatedObject

获得某对象的关联的键的值

objc_removeAssociatedObject

移除某对象上所有关联的对象

少用对象关联   bug难查


objc_msgsend:

int returnvalue = [obj   messagename:paramater]     ==     int returnvalue    objc_msgsend(id  ,  sel , ....)

oc中所有消息调用 都是调用objc_msgsend

每个类中有一个方法表  当调用objc_msgsend时  会以选择子作为 查找这个表的key如果查找到  则调用这个函数(c函数)没找到继续向父类中查找


objc_msgsend_stret : 消息返回结构体时

objc_msgsend_fpret : 消息返回浮点数时

objc_msgsendSuper : 消息在父类中查找



@select(funname:)  以函数名为参数返回函数地址   SEL  存放函数地址的指针

注意1、@selector是查找当前类(含子类)的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值