在if语句中设置子类

时间:2013-11-14 22:49:18

标签: objective-c subclass

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

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

myObject.someProperty=someValue;

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

1 个答案:

答案 0 :(得分:5)

在父类的类型的封闭范围内声明变量。您可以在不使用强制转换的情况下将子类分配给其父类类型的变量。

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

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