在if语句中设置子类

Nil*_*bol 0 subclass objective-c

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

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

myObject.someProperty=someValue;
Run Code Online (Sandbox Code Playgroud)

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

Cat*_*Man 5

在父类的类型的封闭范围内声明一个变量.您可以在没有强制转换的情况下将子类分配给其父类类型的变量.

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

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