将`Class`对象存储到`NSMutableArray`中的正确方法是什么?

时间:2011-03-28 06:13:48

标签: objective-c class nsmutablearray

类型Class看起来不是Objective-C类型。因此将其存储到NSMutableArray看起来需要特别小心。什么是正确的方式?

3 个答案:

答案 0 :(得分:12)

类对象就像其他对象一样。您可以将它们存储在NSMutableArray中,或者像对待对象一样对它们执行操作(例如,调用根类NSObject的方法,如description和{{1}请注意,类型performSelector...是指向类对象的指针的泛型类型,类似于类型Class是指向对象的指针的泛型类型。因此,id类型的值也可以作为Class传递。

id

答案 1 :(得分:2)

我不知道“正确的方法”,但你不能把它存储为字符串吗?

NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:NSStringFromClass([yourObject class])];
[array addObject:NSStringFromClass([anotherObject class])];

//稍后在您的代码中。

id yourObject = NSClassFromString([array objectAtIndex:0UL]);

希望它可能会有所帮助。

答案 2 :(得分:-2)

它可能更慢。一定要衡量它。建议在设备上运行它,这样你就能感受到它。

CFAbsoluteTime elapsedTime, startTime = CFAbsoluteTimeGetCurrent(); 
for (id object in array) {
    if ([object isKindOfClass:[NSString class]])
    id myObject = NSClassFromString(object);
    //Do something with your object.
}
elapsedTime = CFAbsoluteTimeGetCurrent() - startTime;
NSLog(@"time in seconds: %f", elapsedTime);