0

我有两个子类 SubClassA 和 SubClassB,它们都是 ClassA 的子类,它有一个名为 someProperty 的属性。我想在 if 语句内部决定使用这些子类中的哪一个,然后才能使用这个对象。

if(conditionA){
    SubClassA *myObject;
}
else{
    SubClassB *myObject;
}    

myObject.someProperty=someValue;

这不起作用,因为我不能在 if-else-statement 之外使用 myObject 。我怎么解决这个问题?是否可以先创建一个父对象,然后将其更改为属于子类?

4

1 回答 1

5

在父类类型的封闭范围内声明一个变量。您可以将子类分配给其父类类型的变量而无需强制转换。

SuperClass *myObject = nil;
if (a) {
    myObject = [[SubClassA alloc] init...];
} else {
    myObject = [[SubClassB alloc] init...];
}
myObject.someProperty=SomeValue;

当然,假设 someProperty 在超类上声明。否则我认为这段代码可能需要重新考虑。

于 2013-11-14T22:52:20.210 回答