是否可以在 Objective C 的 init 方法中返回不同类的实例?我有一个名为:MyCustomClass 的类。我还有另外两个不同的类,称为Class 1
and Class2
。我要实现的是:当我调用[[MyCustomClass alloc] initWithSomeParameters
创建实例Class1
或Class2
取决于某些条件时。
MyCustomClass.m
:
#import "MyCustomClass.h"
#import "Class1.h"
#import "Class2.h"
-(id) initWithSomeParameters: (id) params{
id myClass;
if (someCondition){
myClass = [[Class1 alloc] initWithSomeParameters:(id) params];
[myClass setSomething:something];
}else{
myClass = [[Class2 alloc] initWithSomeParameters:(id) params];
[myClass setSomething:something];
}
return myClass;
}
...后来我打电话给
id myCustomClass = [[MyCustomClass alloc] initWithSomeParameters:(id) params];
这是一个错误的方法吗?如果是这样,什么是正确的?