我想检查对象(例如someObject
)是否可分配(可转换)为另一种类型的变量(例如SpecifiedType
)。在Java中,我可以写:
someObject instanceof SpecifiedType
相关问题是查找对象的运行时类型是否等于另一种类型。在Java中,我可以写:
someObject.getClass().equals(SpecifiedType.class)
如何在Objective-C中完成?
答案 0 :(得分:256)
尝试[myObject class]
返回对象的类。
您可以与以下内容进行精确比较:
if ([myObject class] == [MyClass class])
但不能直接使用MyClass
标识符。
类似地,您可以使用以下命令查找对象是否属于您的类的子类:
if ([myObject isKindOfClass:[AnObject class]])
答案 1 :(得分:37)
来自Wikipedia:
在Objective-C中,例如,两者都有 通用
Object
和NSObject
(in Cocoa / OpenStep)提供了该方法isMemberOfClass:
返回true
if 该方法的参数是 指定类的实例。该 方法isKindOfClass:
类似 如果参数继承,则返回true 来自指定的类。
isKindOfClass:
最接近instanceof
的声音。
答案 2 :(得分:9)
请参阅isKindOfClass:文档中的NSObject方法。 (对于这样的问题,通常的警告是检查对象类通常是做错事的标志。)