Runtime学习笔记

作者: 丨n水瓶座菜虫灬 | 来源:发表于2016-10-22 16:33 被阅读54次

RunTime学习

1. 将OC代码转化成C++代码

使用终端,cd到目标文件夹,再执行clang命令,例如 clang -rewrite-objc main.m

main.m转换成C++代码

可见,源码中,NSObject调用alloc方法以分配内存,实际上是给NSObject类发送alloc消息,objc_msgSend函数有多个参数,第一个参数是给谁发送消息,也就是谁在调用方法,第二个参数是调用什么方法,注册方法编号,然后根据方法编号在内存空间中找到对应的方法列表中的方法,再根据方法列表中的方法找到方法区中对应的方法实现,后面的参数是方法的参数。

2. 消息机制

使用runtime,需要导入<objc/message.h>,该库内部引入了<objc/runtime.h>,然后build Setting -> 搜索 msg -> 设置为NO

3. 方法交换

使用runtime,可以在运行时交换两个方法的实现,这也就是传说中的苹果黑魔法。

添加UIImage分类,在分类中的load方法中实现方法交换,方法交换的前提是需要有两个方法,所以自己需要写一个方法。


Snip20161022_7.png

方法交换过程:


方法交换思路图

相关文章

网友评论

    本文标题:Runtime学习笔记

    本文链接:https://www.haomeiwen.com/subject/abrhuttx.html