時にクラスタイプを決定します。実行時にObjective Cの - 私はこれを持っているインタフェースでは、実行時
Animal* myPet;
を私はmyPetは、動物のサブクラスです猫や犬になりたいことがあります。
id newPet;
if(someCondition) {
newPet = [[Cat alloc] initWithNibName:@"Cat" bundle:nil];
} else {
newPet = [[Dog alloc] initWithNibName:@"Dog" bundle:nil];
}
self.myPet = newPet;
明らかにこれは間違っていますが、私がしようとしていることを示すだけで十分です。これを行うベストプラクティスは何ですか?
なぜこれが間違っていると思いますか? –
あなたのコードでたくさんの 'isKindOfClass:'を実行することは、一般的にあなたが物事を困難な方法でやっていることを示しています。 – bbum
@Dave - 動作しないためです。 newPet.hunger = 50を試してみると、 'newPet'のメンバ 'hunger'のリクエストがあります。これは非クラス型の 'objc_object *'です – sol