给定以下代码:
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
(未声明的标识符)的错误,这在某种程度上是显而易见的(“如果两个条件都为假,我该怎么办?”)。这意味着我必须在 if-else 块之前定义对象,但我必须使用哪种类型的对象?如果我使用id
会有错误myObj.property = TRUE;
,如果我使用ClassOne
orClassTwo
会有一些关于不兼容指针分配的警告。我应该使用其他方式而不是给定的代码吗?
谢谢你。
(注意:该片段是在没有使用语法检查或测试的情况下编写的,因此它可能包含错误)