【发布时间】:2016-08-18 13:14:55
【问题描述】:
我有以下代码:
id anArray = [NSArray arrayWithObjects:@1, @2, nil];
NSLog(@"anArrayClass - %@", [anArray class]);
NSLog(@"NSArrayClass - %@", [NSArray class]);
我希望两个输出都是NSArray,但是输出结果是:
2016-08-18 21:08:53.628 TestUse[9279:939745] anArrayClass - __NSArrayI
2016-08-18 21:08:53.629 TestUse[9279:939745] NSArrayClass - NSArray
然后我创建一个名为CAJTestClass 的测试类并创建该类的一个实例:
id testInstance = [CAJTestClass new];
NSLog(@"testInstanceClass - %@", [testInstance class]);
NSLog(@"cajTestClass - %@", [CAJTestClass class]);
这次的输出变成:
2016-08-18 21:08:53.629 TestUse[9279:939745] testInstanceClass - CAJTestClass
2016-08-18 21:08:53.629 TestUse[9279:939745] cajTestClass - CAJTestClass
这一次的结果是我所期望的。但是为什么[anArray class] 会成为__NSArrayI?
“Effective Objective-C”的解释是NSArray 是“类集群”的一部分(我认为这是一系列具有继承关系的类)。但CAJTestClass 也是NSObject 的子类。我错了吗?
编辑:感谢您的所有回答。但我的问题是,如果它应该有助于“类集群”的事务,为什么我会在这两种情况下得到不同的结果?
【问题讨论】:
标签: objective-c nsarray class-cluster