我想检查一个对象(例如someObject
)是否可分配(可转换)给另一种类型的变量(例如SpecifiedType
)。在 Java 中,我可以写:
someObject instanceof SpecifiedType
一个相关的问题是查找对象的运行时类型是否等于另一种类型。在 Java 中,我可以写:
someObject.getClass().equals(SpecifiedType.class)
如何在 Objective-C 中做到这一点?
我想检查一个对象(例如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
该方法类似地返回 true。isKindOfClass:
isKindOfClass:
听上去最接近instanceof
。
请参阅NSObject文档中的isKindOfClass:方法。(对于此类问题,通常的警告词是检查对象类通常是做错事的标志。)