次のコードがあるとします。
for (id object in anArray){
if ([object isKindOfClass:[ClassOne class]]){
ClassOne *myObj = [[ClassOne alloc] init];
}else if ([object isKindOfClass:[ClassTwo class]]){
ClassTwo *myObj = [[ClassTwo alloc] init];
}
myObj.property = TRUE;
}
コンパイラは (宣言されていない識別子) に関するエラーを発生させますmyObj
が、これはどういうわけか明白です (「両方の条件が false になる場合はどうすればよいですか?」)。つまり、if-else ブロックの前にオブジェクトを定義する必要がありますが、どのタイプのオブジェクトを使用する必要があるのでしょうか? を使用id
すると でエラーが発生し、またはmyObj.property = TRUE;
を使用すると互換性のないポインター割り当てに関する警告が表示されます。指定されたコードの代わりに他の方法を使用する必要がありますか?ClassOne
ClassTwo
ありがとうございました。
(注: スニペットは構文チェックやテストを使用せずに記述されているため、エラーが含まれている可能性があります)