En tiempo de ejecución, cuando se envía un mensaje a un objeto, ese objeto va a la clase que lo creó y le dice: ". Me enviaron este mensaje Ejecutar el código del método de emparejamiento " Esto es diferente a la mayoría del lenguaje de compilación, donde el método a ejecutar se determina en tiempo de compilación.
¿CÓMO SABE UN OBJETO QUE CLASE LO CREA?
Utiliza su isa puntero. Cada objeto tiene una variable de instancia llamada isa. Cuando se crea un objeto, la clase establece la variable de instancia isa del objeto de retorno para señalar hacia atrás en esa clase. Se llama puntero isa porque un objeto "es una instancia" de esa clase. Aunque probablemente nunca uses explícitamente el puntero isa, su existencia le otorga a Objective-C gran parte de su poder.
Un objeto sólo responde a un mensaje si su clase (apuntado por su puntero ISA) implementa el método asociado. Debido a que esto ocurre en tiempo de ejecución, XCode no siempre puede determinar en el tiempo de compilación (cuando se construye la aplicación) si un objeto responderá a un mensaje.XCode le dará un error si cree que está enviando un mensaje a un objeto que no responderá, pero si no está seguro, permitirá que la aplicación se genere.
Si, por alguna razón (y hay muchas posibilidades), se termina el envío de un mensaje a un objeto que no responde, su solicitud será lanzado una excepción. Por lo tanto, el isa puntero es el motivo de error de tiempo de ejecución. Veamos los detalles y el ejemplo aquí: IOS - Objective-C - Exceptions And Unrecognized Selectors
léelo como "es un". "myObj es una instancia de MyClass" – vikingosegundo
¿tiene ejemplo, qué es un puntero isa por favor? – user454083