从不同类的对象创建数组?

时间:2014-11-27 17:20:52

标签: objective-c arrays class

我发布了类似的问题,但现在我还有其他一些问题。

所以我有一个Factory类。该工厂生产设备(类设备)。 Devices类具有一些属性,并具有多个子类:手表,智能手机,计算机。 这家工厂可以生产200台设备。

self.factoryArray = [[NSMutableArray alloc]initWithCapacity:200];

我想从手表,智能手机和计算机类创建对象并将它们放入此数组中。在Factory类中,我有方法createDevice

- (void)createDevice {
while (self.factoryArray.count < 200) {

    Devices *device = [[Devices alloc]init];
    [self.factoryArray addObject:device];

  }  
}

现在,如何将每个设备(来自factoryArray的对象)随机关联到类对象Watch或Smartphone等......

1 个答案:

答案 0 :(得分:1)

在Objective-C中,对象的类在创建时决定,以后不能更改。因此,您需要使用随机数生成器来确定要创建的子类,然后将其存储在数组中。类似的东西:

while (self.factoryArray.count < 200) {
    Device *device;
    int r = arc4random() % 3; // or however many different classes you have
    switch (r) {
    case 0:
        device = [[Watch alloc] init];
        break;
    case 1:
        device = [[Smartphone alloc] init];
        break;
    // so on and so forth
    }
    [self.factoryArray addObject:device];
}

请注意,因为所有设备类都是Device的子类,所以您可以将它们分配给Device *类型的变量而不会出错。

祝你好运!