RuntimePDF
RuntimePDF copied to clipboard
Runtime系列文章总字数为10w+,写技术文章不容易,希望各位能帮忙点个Star,谢谢!
你好,在你的pdf的Message Forward中描述到: > 可以通过重写resolveInstanceMethod:和resolveClassMethod:方法,动态添加未实现的方法。其中第一个是添加实例方法,第二个是添加类方法。这两个方法都有一个BOOL返回值,返回NO则进入消息转发机制。 实际上,不论你返回yes或者no,都会重新搜索一遍是否已经添加了方法,当第二次搜索没有时,才会进入消息转发,具体的源码(objc-723)如下: ``` IMP lookUpImpOrForward(Class cls, SEL sel, id inst, bool initialize, bool cache, bool resolver) { IMP imp = nil; bool triedResolver = NO; runtimeLock.assertUnlocked(); //...
建议文中比较下它们的区别和联系。 我联系上下文想了下,method应该是表达了IMP和SEL的映射关系,对吗?
内存布局
文中写道 ``` 类的本质是结构体,在结构体中包含一些成员变量,例如method list 、ivar list 等, 这些都是结构体的一部分,method、protocol、property的实现这些都可以放到类中, 所有对象调用同一份即可... ``` 1.文中说明的methodlist 和metod 有什么不同 2.文中说明的对象是类对象 or 实例对象 3.若是实例对象,那么实例对象的私有方法,对应的也就是实例对象的methodlist 是做如何处理的呢?