CFArrayRef类使用iskindofclass

时间:2016-09-16 02:25:50

标签: ios objective-c nsmutablearray nsarray

在以下代码中,我使用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数组是可变的。

1 个答案:

答案 0 :(得分:0)

如果您阅读Apple文档,您会看到 @interface NSMutableArray<ObjectType> : NSArray<ObjectType> 因此,如果你的对象是一种NSMutableArray,那肯定是一种NSArray。 您应该NSLog(@"array class %@", [array class]);

进行检查