我想检查对象(例如someObject
)是否可分配(可铸造)到另一种类型的变量(例如SpecifiedType
).在Java中,我可以写:
someObject instanceof SpecifiedType
一个相关的问题是查找对象的运行时类型是否等于另一种类型.在Java中,我可以写:
someObject.getClass().equals(SpecifiedType.class)
如何在Objective-C中完成?
尝试[myObject class]
返回对象的类.
您可以与以下内容进行精确比较:
if ([myObject class] == [MyClass class])
但不能直接使用MyClass
标识符.
类似地,您可以找到对象是否属于您的类的子类:
if ([myObject isKindOfClass:[AnObject class]])
正如Jon Skeet和zoul所建议的那样.
来自维基百科:
例如,在Objective-C中,泛型
Object
和NSObject
(在Cocoa/OpenStep中)都提供了方法isMemberOfClass:
,true
如果方法 的参数是指定类的实例,则返回该方法.isKindOfClass:
如果参数继承自指定的类,则该方法类似地返回true.
isKindOfClass:
instanceof
通过它的声音最接近它.
请参阅NSObject文档中的isKindOfClass:方法.(对于这样的问题,通常的警告是检查对象类通常是做错事的标志.)