在Objective-C中,Java的“instanceof”关键字相当于什么?

时间:2009-02-11 11:32:34

标签: objective-c types casting equality downcast

我想检查对象(例如someObject)是否可分配(可转换)为另一种类型的变量(例如SpecifiedType)。在Java中,我可以写:

someObject instanceof SpecifiedType

相关问题是查找对象的运行时类型是否等于另一种类型。在Java中,我可以写:

someObject.getClass().equals(SpecifiedType.class)

如何在Objective-C中完成?

3 个答案:

答案 0 :(得分:256)

尝试[myObject class]返回对象的类。

您可以与以下内容进行精确比较:

if ([myObject class] == [MyClass class])

但不能直接使用MyClass标识符。

类似地,您可以使用以下命令查找对象是否属于您的类的子类:

if ([myObject isKindOfClass:[AnObject class]])
由Jon Skeet和zoul建议。

答案 1 :(得分:37)

来自Wikipedia

  

在Objective-C中,例如,两者都有   通用ObjectNSObject(in   Cocoa / OpenStep)提供了该方法   isMemberOfClass:返回true if   该方法的参数是   指定类的实例。该   方法isKindOfClass:类似   如果参数继承,则返回true   来自指定的类。

isKindOfClass:最接近instanceof的声音。

答案 2 :(得分:9)

请参阅isKindOfClass:文档中的NSObject方法。 (对于这样的问题,通常的警告是检查对象类通常是做错事的标志。)