简单的问题:Objective-C 中的“isa”实例变量提供与 Java 中的“instanceof”运算符相同的功能是否公平?
这些是不同的概念。
一个是一个member一个结构体,而另一个是一个operator.
模仿严格的解释instanceof
Java中的运算符,可以对指针进行比较isa
member:
if(obj->isa == [SomeClass class]) {
//obj is an instance of SomeClass
}
但建议您使用NSObject
协议的-isMemberOfClass: http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/doc/uid/20000052-BBCEBEIC方法来实现这一点:
if([obj isMemberOfClass:[SomeClass class]]) {
//obj is an instance of SomeClass
}
如果您有兴趣知道指定的类是否是另一个类的实例,或者是另一个类的子类,您应该使用NSObject
协议的-isKindOfClass:
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)