¿Cómo pruebo si un objeto es una instancia de una clase particular en Objective-C? Digamos que quiero ver si el objeto a es una instancia de clase b, o clase c, ¿cómo hago para hacerlo?
objective-c
futureelite7
fuente
fuente
class_getName
másNSStringFromClass
? Si no hay ninguno, esta respuesta debe ajustarse.También puedes usar
en cualquier NSObject
fuente
Lo que significa isKindOfClass en la documentación de Apple
Tenga cuidado al usar este método en objetos representados por un grupo de clases. Debido a la naturaleza de los grupos de clases, el objeto que recupera puede no ser siempre del tipo que esperaba. Si llama a un método que devuelve un grupo de clases, el tipo exacto que devuelve el método es el mejor indicador de lo que puede hacer con ese objeto. Por ejemplo, si un método devuelve un puntero a un objeto NSArray, no debe usar este método para ver si la matriz es mutable, como se muestra en el siguiente código:
Si usa tales construcciones en su código, podría pensar que está bien modificar un objeto que en realidad no debería modificarse. Hacerlo podría crear problemas para otro código que espera que el objeto permanezca sin cambios.
fuente
-isKindOfClass:
&-isMemberOfClass:
no debe usarse para identificar objetos dentro de un grupo de clases.Si desea verificar una clase específica, puede usar
fuente
si desea obtener el nombre de la clase simplemente llame:
fuente
También puede verificar el tiempo de ejecución. Ponga un punto de interrupción en el código y escriba dentro de la consola (lldb)
Me gusta esto..
fuente