什么是NSArray的实际类别?

时间:2014-08-20 11:35:03

标签: objective-c cocoa inheritance nsarray

请考虑以下代码:

NSArray *array = [NSArray array];

Class class      = [array class];
Class superclass = [array superclass];

NSLog(@"Class %@", class); // __NSArrayI, ok
NSLog(@"Superclass %@", superclass); // NSArray, why? why not NSObject?

打印数组的超类时,我希望看到NSObject,但会打印NSArray。实际上我打算在打印数组的类时看到NSArray。为什么这样工作?有人可以解释一下吗?

2 个答案:

答案 0 :(得分:5)

NSArray的结构比NSObject的简单继承更复杂,因为NSArray类群。您可以在https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/ClassClusters/ClassClusters.html

找到有关类集群的更多信息

答案 1 :(得分:0)

如果nslog超类其打印NSObject

Class superclass = [NSArray superclass];