objective-c - and - que es un downcast en java
En Objective-C, ¿cuál es el equivalente de la palabra clave "instanceof" de Java? (3)
De la Wikipedia :
En Objective-C, por ejemplo, tanto el
Object
genérico como elNSObject
(en Cocoa / OpenStep) proporcionan el métodoisMemberOfClass:
que devuelvetrue
si el argumento del método es una instancia de la clase especificada. El método esisKindOfClass:
análoga devuelve verdadero si el argumento hereda de la clase especificada.
isKindOfClass:
sería lo más cercano a instanceof
, por los sonidos de la misma.
Me gustaría comprobar si un objeto (p someObject
Ej., someObject
objeto) es asignable (cast-able) a una variable de otro tipo (por ejemplo, SpecifiedType
). En Java, puedo escribir:
someObject instanceof SpecifiedType
Una pregunta relacionada es encontrar si el tipo de tiempo de ejecución de un objeto es igual a otro tipo. En Java, puedo escribir:
someObject.getClass().equals(SpecifiedType.class)
¿Cómo se puede hacer esto en Objective-C?
Pruebe [myObject class]
para devolver la clase de un objeto.
Puede hacer comparaciones exactas con:
if ([myObject class] == [MyClass class])
pero no usando directamente el identificador MyClass
.
Similarmente, puedes encontrar si el objeto es de una subclase de tu clase con:
if ([myObject isKindOfClass:[AnObject class]])
como lo sugirieron Jon Skeet y Zoul.
Vea el método isKindOfClass: en la documentación de NSObject . (La palabra usual de advertencia para dicha pregunta es que revisar la clase de objeto es a menudo un signo de hacer algo mal).