AnimalBOOLというプロパティを持つクラスaliveです。Monkey、ZebraおよびWalrusのサブクラスですAnimal。、およびのインスタンスの混合を含むNSArrayと呼ばれるのインスタンスがあり、最初の生きているインスタンスを見つけたい場合、次のようにすることができます。zooMonkeyZebraWalrusZebra
Zebra *zebra;
for (Animal *animal in zoo) {
if ([animal isMemberOfClass:[Zebra class]] && animal.alive) {
zebra = animal;
break;
}
}
問題は、私が設定したときにコンパイラが互換性のないポインタ型について不平を言うことzebra = animalです。そのようなキャストを行うとうまくzebra = (Zebra *)animalいくようですが、そのようなキャストがObjective-Cで安全かどうかはわかりません。
このような状況に対処するためのより良い方法は何ですか?