类型Class
看起来不是Objective-C类型。因此将其存储到NSMutableArray
看起来需要特别小心。什么是正确的方式?
答案 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);