0

フレームワークを作成していて、カテゴリ内のスーパークラスにプライベートメソッドを追加して、公開されないようにします。

例として、次のように定義されたパブリッククラスがあるとします。

@interface Animal : NSObject

- (void)makeNoise;

@end

そして、次のようなパブリックサブクラス:

@interface Dog : Animal

- (void)makeNoise;

@end

次に、すべてのオブジェクトに関連するプライベートメソッドを追加したいので、次のようなカテゴリを作成します。Animal

@interface Animal(PrivateMethods) 

- (void)privateSing;

@end

そして問題はここにあります。サブクラスからスーパークラスPrivateMethodsカテゴリにアクセスすることはできませんか?

次のコードを実行すると、unrecognized selector sent to instaceエラーが発生します。

#import "Animal+PrivateMethods.h"
@implementation Dog

- (void)description {
    // unrecognized selector sent to instace
    [self privateSing];
}

@end
4

0 に答える 0