类簇 : 可以把多个类的复杂实现 隐藏到一个类的借口之下
对象关联 :
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是查找当前类(含子类)的方法。