2011-03-28 67 views

回答

2

我不知道“正确的方式”,但不能把它存储为一个字符串?

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

//稍后在您的代码中。

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

希望它可以帮助。

+1

嗯它看起来非常规律和推荐的方式。但它看起来效率很低。你知道它的性能考虑吗? – Eonil 2011-03-28 06:45:32

-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); 
11

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

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

//Later in your code. 

Class yourObject = [array objectAtIndex:0UL]; 
相关问题