我发布了类似的问题,但现在我还有其他一些问题。
所以我有一个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等......
答案 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 *
类型的变量而不会出错。