Pregunta de la entrevista de IOS: ¿Qué sucede al enviar un mensaje a un objeto nulo en objc?
El puntero Isa es un puntero de objeto a objeto de clase, y el objeto de clase apunta a un objeto de metaclase. Los métodos de objeto y los métodos de clase se almacenan en objetos de clase y objetos de metaclase respectivamente. En el mecanismo de paso de mensajes, la dirección de llamada real del método se encuentra a través del puntero isa.
Cuando objc envía un mensaje a un objeto, la biblioteca en tiempo de ejecución encontrará la clase a la que realmente pertenece el objeto en función del puntero isa del objeto y luego buscará en la lista de métodos de la clase y el lista de métodos de su clase padre El método a ejecutar. Luego, al enviar un mensaje, el método objc_msgSend no devolverá un valor. El llamado contenido devuelto se ejecuta cuando se realiza la llamada específica. Luego, volviendo a este tema, si envía un mensaje a un objeto nulo, en primer lugar, cuando busca el puntero isa del objeto, se devuelve la dirección 0, por lo que no habrá ningún error.
Más: colección de preguntas de entrevistas para iOS