我正在编写一个返回给定视图控制器类的视图控制器实例的方法,但我需要确保传入的类实际上是一个视图控制器类:
- (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子类
答案 0 :(得分:24)
if ([cls isSubclassOfClass:[UIViewController class]]) {
//Your code
}
答案 1 :(得分:1)
您可以使用以下代码。
if ([cls isKindOfClass:[UIViewController class]]) {
//your code
}
答案 2 :(得分:0)
如果你有一个表示要测试的Objective-C类的类对象,那么使用+ (BOOL)isSubclassOfClass:(Class)aClass
返回一个布尔值,该值指示接收者是给定类的实例还是继承自的类的实例那个班。 (所需的)
if([cls isKindOfClass:[UIViewController class]])
{
}
修改强>
如果你有一个类对象,它是要测试的类的子类或者与要测试的类相同,那么使用+ (BOOL)isSubclassOfClass:(Class)aClass
返回一个布尔值,该值指示接收类是否是a的子类,或者是否为a给定的课程。
if([cls isSubclassOfClass:[UIViewController class]])
{
}
答案 3 :(得分:0)
// Check This out
if([youViewControllerObject isKindOfClass:[UIViewController class]])
{
NSLog(@"isViewcontroller Class");
}
答案 4 :(得分:0)
这个答案有点晚了,但是既然你想检查一个类对象的类(不是一个类的实例),以下是相应的测试:
if(cls == [UIViewController class]) {
// Whatever ...
}