最近出去面试,发现问Category的着实不少,但是自己平时用到Category的地方不是很多,要不就是直接拿来github上面直接写好的分类直接使用,所以今天下决心好好深入了解一下
1.创建A类和A的分类B
那么请问在+(void)load方法中谁先载入,经测试是A类先载入+(void)load方法,然后是B的+(void)方法(由此又引出问题二)
2.根据1中的A类和B类再创建一个C类,然后B类和C类覆盖A类中的方法,那么等到编译的时候到底执行的是B类方法还是C类中的方法
Xcode运行时是根据 Build Phases-> Compile Sources中类的顺序由上至下顺序编译的,根据后进先出的原则,后编译的类会被先调用
暂时对于分类是只想到这么多,不过以后会定时补充这些知识点
3.在Category实现交换的时候需要注意的tip(使用runtime的method_exchangeImplementations)
我们在获取实例方法时使用 class_getInstanceMethod
获取类方法使用 class_getClassMethod