当我们在日常开发中,如果涉及到一些iOS底层的东西就可能会遇到方法编码,这是了解这门语言必不可少的一个环节。
带着问题看文章:
1.常规姿势的方法替换原理是什么
2.Aspects
的方法替换原理是什么
3.为什么这样下面的代码这样hook之后,所有的实例的viewWillAppear:
也被hook了
[[UIViewController class] aspect_hookSelector:@selector(viewWillAppear:) withOptions:AspectPositionBefore usingBlock:^(){
} error:nil];
4.为什么Aspect
不能hook静态方法
5.如果用先用Aspects hook了方法A,接着又用MethodSwizzle方法(下文有)对A进行了hook,两个hook都能执行吗?
向对象发送一个消息,如果没有处理就会发生错误。但是在产生错误之前,runtime会给接受对象第二次机会来处理消息。
Message
这篇文章描述了消息如何通过使用objc_msgSend
发送,如何通过方法名称找到对应方法的reference
The objc_msgSend Function
在Object-C中,发送的消息直到运行时才绑定到正真的方式实现。