当前位置:  开发笔记 > IOS > 正文

在Objective-C中,Java的"instanceof"关键字相当于什么?

如何解决《在Objective-C中,Java的"instanceof"关键字相当于什么?》经验,为你挑选了3个好方法。

我想检查对象(例如someObject)是否可分配(可铸造)到另一种类型的变量(例如SpecifiedType).在Java中,我可以写:

someObject instanceof SpecifiedType

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

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

如何在Objective-C中完成?



1> mouviciel..:

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

您可以与以下内容进行精确比较:

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

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

类似地,您可以找到对象是否属于您的类的子类:

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

正如Jon Skeet和zoul所建议的那样.


也可以使用`if([myObject isMemberOfClass:[MyClass class]])进行精确比较.

2> Jon Skeet..:

来自维基百科:

例如,在Objective-C中,泛型ObjectNSObject(在Cocoa/OpenStep中)都提供了方法isMemberOfClass:,true如果方法 的参数是指定类的实例,则返回该方法.isKindOfClass:如果参数继承自指定的类,则该方法类似地返回true.

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



3> zoul..:

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


只是复制下面的"答案":"@Zoul - 为什么使用类型检查被认为是坏的?这不是很好的防御性编程,还是你认为它应该是不必要的?"
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有