如何检查一个给定的类是一种UIViewController类



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

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

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

编辑:

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

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

   //Your code
}  

可以使用下面的代码。

if ([cls isKindOfClass:[UIViewController class]]) {
    //your code
}

如果你有一个类对象代表要测试的Objective-C类,那么使用+ (BOOL)isSubclassOfClass:(Class)aClass返回一个布尔值,该值指示接收者是给定类的实例还是从该类继承的任何类的实例。(需要)

if([cls isKindOfClass:[UIViewController class]])
{
}

编辑

如果您有一个类对象是要测试的类的子类或与之相同,则使用+ (BOOL)isSubclassOfClass:(Class)aClass返回一个布尔值,该值指示接收类是给定类的子类还是与给定类相同。

if([cls isSubclassOfClass:[UIViewController class]])
{
}
// Check This out
if([youViewControllerObject isKindOfClass:[UIViewController class]])
{
    NSLog(@"isViewcontroller Class");
}

这个答案来得有点晚,但是由于您想要检查类对象的类(而不是类的实例),下面是合适的测试:

if(cls == [UIViewController class]) {
   // Whatever ...
}

相关内容

最新更新