随笔分类 -  runtime

摘要:在ARM 32 位的时候,isa 的类型是 Class 类型的,直接存储着实例对象或者类对象的地址;在ARM 64 结构下,isa 的类型变成了共用体(union),使用了位域去存储更多信息。 阅读全文
posted @ 2023-07-10 15:45 黄增松 阅读(29) 评论(0) 推荐(0) 编辑
摘要:源代码 + (Class)class { return self; } - (Class)class { return object_getClass(self); } Class object_getClass(id obj) { if (obj) return obj->getIsa(); el 阅读全文
posted @ 2022-03-16 10:32 黄增松 阅读(199) 评论(0) 推荐(0) 编辑
摘要:关联对象的存储结构 void _object_set_associative_reference(id object, void *key, id value, uintptr_t policy) {} 看到这里能够总结一下关联关系的存储结构了。 AssociationsHashMap是管理目标对象 阅读全文
posted @ 2021-03-04 11:47 黄增松 阅读(1359) 评论(0) 推荐(0) 编辑
摘要:分类 1、原则上只能增加方法(能添加属性的的原因只是通过runtime的objc_setAssociatedObject和objc_getAssociatedObject方法添加setter/getter方法) 2、方法没被实现编译器不会有任何警告,因为分类是在运行时添加到类中 3、可以减少单个文件 阅读全文
posted @ 2019-01-02 14:02 黄增松 阅读(1606) 评论(0) 推荐(1) 编辑
摘要:高级编程语言想要成为可执行文件需要先编译为汇编语言再汇编为机器语言,机器语言也是计算机能够识别的唯一语言,但是OC并不能直接编译为汇编语言,而是要先转写为纯C语言再进行编译和汇编的操作,从OC到C语言的过渡就是由runtime来实现的。然而我们使用OC进行面向对象开发,而C语言更多的是面向过程开发, 阅读全文
posted @ 2018-03-15 18:17 黄增松 阅读(388) 评论(0) 推荐(0) 编辑
摘要:总得来说: 1.+load方法是在main函数之前调用的; 2.遵从先父类后子类,先本类后列类别的顺序调用; 3.类,父类与分类之间的调用是互不影响的.子类中不需要调用super方法,也不会调用父类的+load方法实现; 4.无论该类是否接收消息,都会调用+load方法; 总得来说: 1.+init 阅读全文
posted @ 2017-09-24 21:49 黄增松 阅读(515) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示