在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中,通用
Object和NSObject(在Cocoa / OpenStep中)都提供了方法isMemberOfClass:如果方法的参数是指定类的实例,则返回true。 方法是isKindOfClass:如果参数inheritance自指定的类,则类似地返回true。
isKindOfClass:通过它的声音将最接近instanceof 。
请参阅NSObject文档中的isKindOfClass:方法。 (对于这样的问题,通常的警告是检查对象类通常是做错事的标志。)