在以下代码中,我使用isKindOfClass
检查数组,但是当我检查它是否对两种情况都是正确的时候:
NSString *values[] = {@"hello", @"world"};
CFArrayRef arrayRef = CFArrayCreate(kCFAllocatorDefault, (void *)values, (CFIndex)2, NULL);
NSArray *array = (__bridge NSArray *)arrayRef;
if ([array isKindOfClass:[NSMutableArray class]]) {
NSLog(@"array is mutableArray");
}
if ([array isKindOfClass:[NSArray class]]) {
NSLog(@"array is immutabelArray");
}
结果:
2016-09-16 10:00:32.873 TestArray[12246:198137] array is mutableArray
2016-09-16 10:00:32.874 TestArray[12246:198137] array is immutabelArray
结果让我感到困惑 数组是不可变的,但为什么print数组是可变的。
答案 0 :(得分:0)
如果您阅读Apple文档,您会看到
@interface NSMutableArray<ObjectType> : NSArray<ObjectType>
因此,如果你的对象是一种NSMutableArray,那肯定是一种NSArray。
您应该NSLog(@"array class %@", [array class]);