9

別のクラスの実装への追加として、プライベート クラス (.m 内で宣言および定義されている) があり、そのプライベート クラスを内部で使用しています。

そのプライベート クラスのメソッドの 1 つをスウィズルしたいと思います。

私はカテゴリを定義し、いつものことをしました:

+(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 がカテゴリを追加するクラスを参照していることです。そのため、元の実装を呼び出す方法がなく、一般にプライベート クラスを操作する方法がありません。

これに取り組むための適切なアプローチは何ですか?

4

1 に答える 1