我一直试图让这个脚本打印出插入的两种对象之一。但是,它总是打印两种类型,而只插入一个东西。有两个类,VKJItem和VKJBox。 VKJBox是VKJItem的子类。
这是main.m:
VKJBox *box1 = [[VKJBox alloc] init];
VKJBox *box2 = [[VKJBox alloc] init];
[box1 addItem:box2];
这是我的VKJBox的addItem方法的实现:
if ([item isKindOfClass:[VKJBox class]]) {
NSLog(@"BOX");
}
if ([item isKindOfClass:[VKJItem class]]) {
NSLog(@"ITEM");
}
问题是脚本会将BOX和ITEM打印到控制台。
答案 0 :(得分:2)
VKJBox是VKJItem的子类,因此VKJBox是一种 VKJItem,是一种 VKJBox。
-isKindOfClass:用于确定对象是类的实例还是从类继承的类的实例。
例如:
对于UIImageView,UILabel等,isKindOfClass [UIView类]将为true。
使用 -isMemberOfClass:来检查对象是否是指定类的实例。
答案 1 :(得分:0)
您的类必须是其他的子类。
isKindClass:
返回一个布尔值,指示接收者是给定类的实例还是从该类继承的任何类的实例。
isMemberOfClass:
返回一个布尔值,指示接收者是否是给定类的实例。
您需要使用isMemberOfClass