1

オプションのプロトコル (PrettyPrinter) のメソッドに応答するオブジェクトが、通常の NSObject の説明ではなく、プロトコル メソッドからの結果を出力する条件を NSObject の説明メソッドに追加しようとしています。ただし、プリンタであるオブジェクトがプロトコルに応答しない場合、説明は通常の応答を返す必要があります。

これを行うための私の現在の試みには、このプロトコルとオーバーライドされた説明メソッドを含む NSObject のカテゴリを作成することが含まれます。ただし、カテゴリのオーバーライドされていないメソッドを呼び出す方法を知りません。

-(NSString*)description
{
    if ([self respondsToSelector:@selector(prettyPrinter)]) {
        return self.prettyPrinter;
    }else{
        // Would Like to return normal description if does not respond to selector. But
        // can not call super description due to being a category instead of a subclass
        return [super description];
    }
}

これを達成できる方法についてのアイデアは大歓迎です。ありがとう!

更新: もう少し検索すると、これはスウィズリングと呼ばれるものによって達成できるように思われます。ただし、これに対する現在の試みはまだ成功していません。この目標を達成するためにスウィズリングを使用するテクニックについてのアドバイスも役に立ちます。

4

2 に答える 2

-1

カテゴリがそのカテゴリのクラスに存在するメソッドをオーバーライドする場合、元の実装を呼び出す方法はありません。

続きを読むにはここをクリック!

于 2013-04-19T18:20:38.953 に答える