如何在Objective-C中测试类类型



我试图使用-isKindOfClass:来测试类类型,但当我将类类型存储在变量中时,它对我不起作用。

下面是一个例子。我错过了什么?

@interface MyClass : NSObject
@end
@implementation MyClass
@end
Class classType = [MyClass class];
[classType isKindOfClass:[MyClass class]]; // returns NO
classType == [MyClass class]; // returns YES

问题是MyClass不是从MyClass继承的。

isKindOfClass按照您将其用作实例方法时所期望的方式工作:

[[classType new] isKindOfClass:[MyClass class]]; // YES

但当您将其用作方法时,它会测试继承:

[classType isKindOfClass:[NSObject class]]; // YES

如果您想知道classType是否是[MyClass class],请使用==,就像您正在做的一样。

最新更新