方法调用
运行过程:
如果实例对象调用实例方法,会到实例的isa指针指向对象操作。
如果调用的是类方法,会到本类的isa指针指向的对象中操作。
意思是
1.先在本类中寻找
2.如果本类中没有,在去父类中寻找
3.如果父类中也没有 再去拦截方法中找
4.如果拦截方法中没有 那么就gg了 程序崩了
5.程序崩了:怪我咯
+ (BOOL)resolveClassMethod:(SEL)sel;
+ (BOOL)resolveInstanceMethod:(SEL)sel;
- (id)forwardingTargetForSelector:(SEL)aSelector;
- (void)forwardInvocation:(NSInvocation *)anInvocation;
后两个方法需要转发到其他的类处理
以及 关联对象
用runtime就可以解决了 更大一部分的是 objc2
利用clang 方法 搞出底层c的东西