采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
1,[per class]和[Person class]有什么区别呢? 2,[per class]和object_getClass(per)有什么区别呢?
建议多回顾下《类的本质》那一章节,默认情况下[per class]是返回自身所对应isa,而[Person class]返回的是自身,所以二者都是返回的Person。
一个是OC里常用的方法,一个是底层RuntimeAPI。调用[per class]最终也会调用object_getClass(per),而且前者会走消息流程,后者不会。
按系统常规的api,这两个方法比较好理解。 但是,在模拟KVO实现的章节里,我们对per实例对象的isa做了改变之后,[per class]和object_getClass(per)就指向不同的对象了。我对这里还是有些许不明白
代码里已经把[per class]方法替换了的,你仔细分析下。 Class KVO_class(id self,SEL _cmd) { return class_getSuperclass(object_getClass(self)); //获取isa、在获取isa的父类 }
我又反复重写和学习了模拟KVO的代码,注意到更改的isaClass是原来类的子类,重写的class方法里返回的对象是通过isa指向的isaClass,来获取其父类,即原来的类。现在逻辑理顺了~非常感谢
登录后可查看更多问答,登录/注册
高薪职位,复杂业务需求,高性能APP,Runtime技术不可不学。
811 5
941 4
832 4
958 4
715 4
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号