NSMutableArray *arr = [NSMutableArray arrayWithCapacity:3];
if ([arr isMemberOfClass:[NSMutableArray class]]) {
NSLog(@"YEP!!");
} else {
NSLog(@"NO!!");
}
我总是“不!”在控制台。我尝试使用Array,NSNumber,NSString。所有这些似乎都不起作用。真奇怪。当我从文档中得到它时,如果我再次测试作为测试对象的对象的类,则此方法应该返回YES。我使用的是Foundation.h,而不是Core Foundation(如果它有任何不同之处)。
答案 0 :(得分:9)
您需要使用isKindOfClass:
或respondsToSelector:
作为NSArray
,类似的是class clusters - 您在创建子类时实际上会获得子类。有关这方面的一些有趣内容,请参阅this answer。
答案 1 :(得分:3)
使用[NSMutableArray arrayWithCapacity:]
创建数组时,您获得的对象实际上是NSMutableArray的某个具体子类的成员。 NSMutableArray仅在创建具体实例的过程中暂时存在。
-isMemberOfClass:
指针等于给定的类,则 isa
返回true。如果接收者是给定类或其任何子类的成员,则-isKindOfClass:
返回true。
答案 2 :(得分:1)
你尝试过isKindOfClass而不是isMemberOfClass吗?