iOS进阶就不能仅仅停留在各种控件的使用,要知道其底层原因。
oc作为一门动态语言,其很多方法都建立在运行时之上,因此runtime的学习对于了解底层至关重要。
工欲善其器,必先利其器。搭建一套学习环境十分重要。
一 代码环境搭建
macOS的runtime代码开源了,
1.1 手动搭建
苹果开源的代码,今天查看最新的是 objc4-779.1
需要配置的环境较多,喜欢折腾的可以试试,网上教程也多。
传送
1.2现成的环境
这位前辈搭建好了,在macOS 10.15 Catalina,Xcode 11.0 环境如图所示亲测可用。
传送
二 调试工具, DLIntrospection的使用
对于调试,使用分类了解更多信息。
拓展两个方法:
NSObject (DLIntrospection) 和 NSString (DLIntrospection)
举例:kvo的学习
想看一下kvo底层,通过instanceMethods查看动态类重写了什么方法。
Screen Shot 2020-03-14 at 13.27.18.png看看NSObject (DLIntrospection),图中可以看出class_copyMethodList将其所有重写的方法重新打印了出来
Screen Shot 2020-03-14 at 13.36.15.png
网友评论