如何创建与我已有的对象相同的类的新对象?

时间:2013-01-24 08:04:21

标签: objective-c cocoa-touch introspection

我有一个包含不同类型对象的数组:UIButton s,UILabel s,UITableView s等。

在没有使用if / else条件的情况下循环遍历数组时,我是否可以动态创建这些对象:

for (NSObject *obj in objectsArray)
{
    if ([obj isKindOfClass:[UIButton class]]) 
    {
         UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
         [self.view addSubview:btn];
    }
    else if ([obj isKindOfClass:[UILabel class]]) 
    {
        UILabel *lbl = (UILabel*)obj;
        [self.view addSubview:lbl];
    }
}

我们可以使用反射或动态创建像UIButton *btnUILabel *lbl这样的对象吗?

1 个答案:

答案 0 :(得分:0)

你可以做到

for (Class _class in classArray) {
    id object = [[_class alloc] init];
}

for (NSString *className in classNameArray) {
    id object = [[NSClassFromString(className) alloc] init];
}

因此您不需要实例用于类引用。