什么是NSArray的实际类别?

And*_*kha 1 inheritance cocoa objective-c 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?
Run Code Online (Sandbox Code Playgroud)

当打印数组的超类我希望看到NSObject,但它打印NSArray.实际上我希望看​​到NSArray打印数组的时候.为什么这样工作?谁能解释一下?

Woj*_*wka 5

结构NSArray比简单的继承更复杂NSObject,因为NSArray是一个类集群.您可以在https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/ClassClusters/ClassClusters.html找到有关类集群的更多信息.