iOS:如何检查给定的类是一种UIViewController类?

hzx*_*zxu 7 class objective-c uiviewcontroller ios

我正在编写一个返回给定视图控制器类的视图控制器实例的方法,但我需要确保传入的类实际上是一个视图控制器类:

- (UIViewController *)viewControllerWithClass:(Class)cls nibName:(NSString *)nibName
{
    if (cls is kind of UIViewController subclass)
        return [[[cls alloc] initWithNibNamed:nibName bundle:nil] autorelease];
    return nil;
}
Run Code Online (Sandbox Code Playgroud)

我无法比较类的名称,因为cls可能不是UIViewController.

编辑:

对不起,我的意思是在方法内部,我如何检查是否cls是一种UIViewController子类

Has*_*nka 24

if ([cls isSubclassOfClass:[UIViewController class]]) {


   //Your code

}  
Run Code Online (Sandbox Code Playgroud)

  • 由于这是公认的答案,我只想澄清使用isKindOfClass方法的所有其他答案都是错误的,isKindOfClass对于类型为'Class'的对象不起作用(在本例中为cls),[[CDMyClass class] isKindOfClass: [CDMyClass class]]也返回NO [CDMyClass isKindOfClass:[CDMyClass class]]返回NO.为了使用类型为Class的接收器,您应该使用isSubclassOfClass (4认同)