在下面的代码中,我认为第二个条件为真,但结果却是假的。我错过了什么吗?请帮我理解。
NSArray *array = [[NSArray alloc] init];
NSLog(@"%@", NSStringFromClass([array class]));
if ([array isMemberOfClass:[NSObject class]]) {
NSLog(@"Member NSObject"); //Didn't print;
}
if ([array isMemberOfClass:[NSArray class]]) {
NSLog(@"Member NSArray"); //Didn't print; I don't understand why?
}
if ([array isKindOfClass:[NSObject class]]) {
NSLog(@"Kind of NSObject"); //Printed; Expected
}
if ([array isKindOfClass:[NSArray class]]) {
NSLog(@"Kind of NSArray"); //Printed; Expected
}
编辑
我将 NSArray 的子类创建为 MyArray 并使用 isMemberOfClass 测试它的实例,如下所示
if ([myArray isMemberOfClass:[MyArray class]]) {
NSLog(@"Member MyArray"); //Printed;
}
所以,我猜 isMemberOfClass 在 NSArray 上是不可能的,可能在其他一些框架类上也是如此。
谢谢。