从引用到类的实例化

时间:2014-10-13 15:50:47

标签: ios objective-c

这个有点难以解释。我有一系列的类引用。我想要实例化其中一个成员,但我不想使用有条件的成员。

这是我的代码有效(以下是我想要做的):

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];

任何人都知道这是否可行?谢谢你的帮助。

2 个答案:

答案 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];