在 Objective-C 中,如果我使用类别重写类方法,是否可以调用原始方法(被重写的方法)?
最佳答案
我向您展示了在 +(void)load
中执行此操作的三种令人讨厌的方法。在每种情况下,将您的方法命名为 MyCategory_method 左右。
- class_getMethodImplementation() 和 class_replaceMethod()。存储旧的IMP,并直接调用它。您需要获取方法的类型编码。请注意,您也可以使用普通的 C 函数...
- class_getInstanceMethod()、method_getImplementation()、method_setImplementation()。如上所述,但您不需要获取方法的类型编码。
- 两个方法上的 class_getInstanceMethod(),然后是 method_exchangeImplementations()。调用 MyCategory_method 获取原始实现。这是最简单的方法。
有时,这是让它执行您想要的操作的唯一相当简单的方法......
编辑:只有在您知道自己在做什么的情况下才可以这样做!
关于iphone - 如果我重写一个类方法,有没有一种方法可以调用原始方法(被重写的方法)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3487828/