繁体   English   中英

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

[英]What's the correct way to store `Class` object into `NSMutableArray`?

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

类对象就像其他对象一样。 您可以将它们存储在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];

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

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

//稍后在您的代码中。

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

希望它可能有所帮助。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM