这个有点难以解释。我有一系列的类引用。我想要实例化其中一个成员,但我不想使用有条件的成员。
这是我的代码有效(以下是我想要做的):
self.myClasses = [NSMutableArray arrayWithObjects:
[MyClassA class],
[MyClassB class],
[MyClassC class],
[MyClassD class],nil];
// later
int indexOfClassThatIWantAMemberOf = 2;
switch (indexOfClassThatIWantAMemberOf) {
case 0:
myObj = [[MyClassA alloc] init];
break;
case 1:
myObj = [[MyClassB alloc] init];
break;
case 2:
myObj = [[MyClassC alloc] init];
break;
case 3:
myObj = [[MyClassD alloc] init];
break;
default:
break;
}
以上工作正常,但我宁愿有一行代码,如下所示:
NSObjet *myOb = [[[self.myClasses objectAtIndex:i] alloc] init];
任何人都知道这是否可行?谢谢你的帮助。
答案 0 :(得分:1)
你尝试过你的建议吗?这当然是可能的。
NSArray *array = @[[Class1 class], [Class2 class]];
id object = [[array[0] alloc] init];
答案 1 :(得分:0)
以这种方式尝试:
self.myClasses = [NSMutableArray arrayWithObjects:
[MyClassA class],
[MyClassB class],
[MyClassC class],
[MyClassD class],nil];
// later
NSUInteger indexOfClassThatIWantAMemberOf = 2;
Class class = self.myClasses[indexOfClassThatIWantAMemberOf];
id myObj = [[class alloc] init];