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

我想检查一个对象(如someObject )是否可赋值(可转换)为另一种types的variables(例如SpecifiedType )。 在Java中,我可以写:

 someObject instanceof SpecifiedType 

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

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

Objective-C如何做到这一点?

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

您可以进行精确的比较:

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

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

类似的,你可以通过以下方法find对象是否是你的类的子类:

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

正如Jon Skeet和zoul所build议的那样。

维基百科 :

例如,在Objective-C中,通用ObjectNSObject (在Cocoa / OpenStep中)都提供了方法isMemberOfClass:如果方法的参数是指定类的实例,则返回true 。 方法是isKindOfClass:如果参数inheritance自指定的类,则类似地返回true。

isKindOfClass:通过它的声音将最接近instanceof

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