type que and objective-c types casting equality downcasting

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 el NSObject (en Cocoa / OpenStep) proporcionan el método isMemberOfClass: que devuelve true si el argumento del método es una instancia de la clase especificada. El método es isKindOfClass: 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).