Objective-CでAというクラスを継承してB,Cというクラスを作り、AのクラスメソッドaをB,Cでオーバーライドした場合、

Class c = (条件)?[B class]:[C class];
[c a];
とやると、警告が出てしまいます。警告をなくす方法はありますでしょうか。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/01/31 10:52:21
  • 終了:2012/02/07 10:55:07

回答(0件)

回答はまだありません

  • id:DOISHIGERU
    とりあえず、
    Class c = (条件)?[B class]:[C class];
    A *d= (A *)[[[c alloc] init] autorelease];
    [d.class a];

    という対応を考えてみましたが、クラスメソッドしかつかわないのにインスタンスを作るというのは不格好な感じがします。。
  • id:DOISHIGERU
    解決しました。idを使えば良いみたいです。

    id c = (条件)?[B class]:[C class];
    [c performSelector:@selector(a)];

    よって、Objective-Cではインスタンスを生成しなくてもポリモーフィズムが実現できるみたいですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません