我有一个私有类(都在.m 中声明和定义)作为对不同类的实现的补充,它恰好在内部使用该私有类。
我想调配那个私有类的方法之一。
我定义了一个类别并照常进行:
+(void)load
{
Method original, swizzled;
original = class_getInstanceMethod(objc_getClass("SomePrivateClass"), @selector(somePrivateMethod:));
swizzled = class_getInstanceMethod(self, @selector(swizzled_somePrivateMethod:));
method_exchangeImplementations(original, swizzled);
}
问题是我的实现显然对这个私有类一无所知,而 self 指的是我要添加类别的类,无论可能是哪个类。所以我无法调用原始实现并且通常使用私有类。
解决这个问题的正确方法是什么?