Objective c 实例化给定枚举的一系列类中的一个
我试图在Objective-C中为iPhone应用程序做一些事情,但据我所知,没有一个好的解决方案 我有一个枚举,表示从X继承的类A、B和C:Objective c 实例化给定枚举的一系列类中的一个,objective-c,cocoa-touch,inheritance,enumeration,Objective C,Cocoa Touch,Inheritance,Enumeration,我试图在Objective-C中为iPhone应用程序做一些事情,但据我所知,没有一个好的解决方案 我有一个枚举,表示从X继承的类A、B和C: typedef enum ClassEnum { X, A, B, C } ClassEnum; 当我的应用程序变小时,我用它来识别不同类型的类,何时使用它们,应该做什么,等等。现在它在增长,我遇到了一些问题 我有另一个类,它是这些类的组的容器。我想做的是有一个这样的构造函数: -(id) initWithClassTy
typedef enum ClassEnum {
X,
A,
B,
C
} ClassEnum;
当我的应用程序变小时,我用它来识别不同类型的类,何时使用它们,应该做什么,等等。现在它在增长,我遇到了一些问题
我有另一个类,它是这些类的组的容器。我想做的是有一个这样的构造函数:
-(id) initWithClassType:(ClassEnum)type {
//create 10 instances of the given class and add them to an NSMutableArray
}
-(id)initWithClassName:(NSString *)className{
Class *class = NSClassFromString(className);
MyMotherClass *object = [[class alloc]init];
...
}
有没有一种方法可以做到这一点,而不需要一个巨大的开关
,它可以根据类型
调用相应的构造函数?我觉得这样做肯定是错误的
谢谢 可以传递一个字符串,该字符串表示要alloc/init的类的名称,而不是枚举。然后,您可以使用该字符串通过NSClassFromString函数获取所需的类对象。大概是这样的:
-(id) initWithClassType:(ClassEnum)type {
//create 10 instances of the given class and add them to an NSMutableArray
}
-(id)initWithClassName:(NSString *)className{
Class *class = NSClassFromString(className);
MyMotherClass *object = [[class alloc]init];
...
}
我最后做了以下几件事:
Class class = nil;
switch(type) {
case A:
class = [A class];
break;
case B:
class = [B class];
break;
case C:
class = [C class];
break;
case X:
class = [X class];
break;
default:
class = [X class];
break;
}
然后调用[[class alloc]init]