我正在编写一个方法,返回给定视图控制器类的视图控制器实例,但我需要确保传入的类实际上是一个视图控制器类:
- (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 ...
}