在 Objective-C 中,Java 的“ instanceof”关键字的等价物是什么?

我想检查一个对象(例如 someObject)是否可赋值(强制转换)给另一种类型的变量(例如 SpecifiedType)。用爪哇语,我可以写:

someObject instanceof SpecifiedType

一个相关的问题是查明一个对象的运行时类型是否等于另一个类型。用爪哇语,我可以写:

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

如何在 Objective-C 中实现这一点?

84884 次浏览

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

你可以与以下人士作出精确的比较:

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

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

类似地,您可以通过以下方法查找对象是否属于类的子类:

if ([myObject isKindOfClass:[AnObject class]])

正如 Jon Skeet 和 zoul 建议的那样。

来自 维基百科:

例如,在 Objective-C 中, 通用 ObjectNSObject(在 (Cocoa/OpenStep)提供该方法 返回 true如果 方法的参数是 指定类的实例 方法 isKindOfClass:类似 如果参数继承 从指定的类。

从声音来看,isKindOfClass:最接近 instanceof

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