如何确定B类是否是A类的子类?

时间:2011-09-02 10:36:04

标签: objective-c ios

似乎如果您为Mac OS开发,NSObject具有isSubclassOfClass方法。但是当我检查同一类的iOS类引用时,它没有该方法(并且Xcode抱怨该方法)。

我目前的解决方案是在其中放置一个方法-(void)iAmClassB,并执行respondsToSelector:iAmClassB,但这似乎是做作的。我错过了什么吗?

2 个答案:

答案 0 :(得分:58)

可从iOS 2.0及更高版本SDK

获取
if ([ClassB isSubclassOfClass:[ClassA class]]) {


    NSLog(@"yes ClassB is SubclassOfClass of ClassA");

}       

Documentation

  

<强> isSubclassOfClass:

     

返回一个布尔值,指示接收类是否为   给定类的子类或相同的类。

   + (BOOL)isSubclassOfClass:(Class)aClass
     

<强>参数

     

ACLASS

     

一个类对象。

     

返回值

     

YES如果接收类是 - 或{ - 1}}的子类,   否则aClass

     

<强>状况

     

适用于iOS 2.0及更高版本。

答案 1 :(得分:5)

id a= ...;
if([a isKindOfClass:[A class]]){
     ...
}

应该做的工作。您很少需要查看它是否真的是 sub 类。请参阅here