NSProxy是个什么类
它是iOS中除NSObject之外的另外一个根类,是一个虚类一个抽象类。主要作用是负责将消息转发到真正的target的代理类中。
嗯~ 对、它就是一个中间商、一个代理人,帮你去打理各种破事!比如在疫情期间你不能出门、这时你从某餐馆订了一份外卖、你又想让送外卖的小哥哥帮你去药店买个口罩。。。。。。 没错、这时你找NSProxy就对了,只有它才不嫌弃你!
NSProxy有什么用
(1) 模拟多继承
(2) AOP (Aspect Oriented Programming) 面向切面编程 (使用Runtime的swizzle method机制来实现方法替换也可以同样达到hook的目的)
(3) 也有人用它来弱应用timer的target来排除循环引用
NSProxy怎么用
你需要重写以下这两个方法、以实现将消息转发到另一个实类:
使用DEMO:
【 扩展 】为什么要用NSProxy、能用NSObject替换它吗?
这里不使用NSProxy直接使用NSObject也是可以实现的;
使用NSProxy的优势是: NSProxy执行消息转发的效率要高于NSObject。
NSObject执行消息转发的时机:本类 -> 父类 -> 动态方法解析 -> 消息转发
NSproxy执行消息转发的时机:本类 -> 消息转发
【 请勿直接转载 - 节约能源从你我做起 】