在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:方法。 (对于这样的问题,通常的警告是检查对象类通常是做错事的标志。)