我想检查一个Object的类型。我怎么能这样做?
场景是我得到一个对象。如果该对象是A类型,则执行一些操作。如果它是B类,那么做一些操作。目前,对象的类型是C,它是A和B的父级。
我有两个班级AViewController
和BViewController
。我进入UIViewController
的对象。现在如何检查对象是AViewController
还是BViewController
?
答案 0 :(得分:152)
if([some_object isKindOfClass:[A_Class_Name class]])
{
// do somthing
}
答案 1 :(得分:44)
NSObject上有一些方法可以让你检查类。
首先是-class
,它将返回对象的Class。这将返回AViewController或BViewController。
然后有两种方法,-isKindofClass:
和isMemberOfClass:
。
-isKindOfClass:
将接收器与作为参数传入的类进行比较,并根据类是否是给定类的相同类型或子类返回true或false。
-isMemberOfClass:
将接收器与作为参数传入的类进行比较,并根据类是否与给定类严格相同的类返回true或false。
答案 2 :(得分:3)
Objective-C中更常见的模式是检查对象是否响应您感兴趣的方法。示例:
if ([object respondsToSelector:@selector(length)]) {
// Do something
}
if ([object conformsToProtocol:@protocol(NSObject)]) {
// Do something
}