Cómo utilizar el tiempo de ejecución de iOS en desarrollo
RunTime es la abreviatura de tiempo de ejecución. Son algunos mecanismos del sistema en tiempo de ejecución, el más importante de los cuales es el mecanismo de mensajes. Para C, las llamadas a funciones determinan en el momento de la compilación qué función llamar (consulte aquí las llamadas a funciones en C). Después de la compilación, se ejecutan directamente en secuencia sin ninguna dualidad. Las llamadas a funciones en OC se convierten en mensajes. Este es un proceso de llamada dinámico. En tiempo de compilación, es imposible determinar qué función se llama realmente (resulta que OC puede llamar a cualquier función en tiempo de compilación, incluso si la función no está implementada, siempre que esté declarada, no se informará ningún error. El lenguaje C dará un error en el momento de la compilación). Solo en tiempo de ejecución OC encuentra la función a llamar según el nombre de la función.
Ejemplo:
Si usa [obj makeText];,
La situación en tiempo de ejecución será la siguiente: Primero, el compilador convertirá el código [ obj makeText]; a objc_msgSend(obj, @selector(makeText));. Primero encuentre la clase correspondiente a obj a través del puntero isa de obj. En la clase, primero vaya al caché para encontrar el método de la función correspondiente a través de SEL (supongo que la lista de métodos en el caché se almacena a través de una tabla hash con SEL como clave, lo que puede mejorar la velocidad de búsqueda de la función), si no se encuentra en el caché. Luego busque en la lista de métodos. Si no se encuentra en la lista de métodos, busque en la superclase. Si se puede encontrar, el método se agrega al caché para facilitar la búsqueda la próxima vez, y el puntero de función en el método se usa para saltar a la función correspondiente para su ejecución.