Swift es un lenguaje precompilado y todos los objetos se convierten en direcciones de memoria; sin embargo, hay un "Selector" especial en Swift que permite encontrar funciones por nombres de función en tiempo de ejecución. ¿Cómo funcionó esto? ¿Significa esto que nombrar funciones afectará la eficiencia operativa?
No , los nombres de las funciones no afectan significativamente el rendimiento en Swift.
Los nombres de funciones y métodos se utilizan de dos maneras principales una vez compilados en su programa:
#selector(...) ), el selector único está precompilado en su programa, por lo que nunca es necesario buscar el nombre en el tiempo de ejecución, y el puntero del selector en sí puede hacerlo. usarse directamente al llamar a métodosNSSelectorFromString(...) ), el selector se busca dinámicamente desde el nombre dado (en una tabla global de selectores únicos) y, si no se encuentra, se crea dinámicamente un nuevo selector en tiempo de ejecución.En ambos casos (1) y (2a), el nombre de la función nunca se usa realmente en el proceso de hacer la llamada y es irrelevante. En el caso (2b), técnicamente lo es (para búsqueda de selector), pero el proceso es tan rápido que realmente no importa. Los nombres de los métodos rara vez son largos, ya que la mayoría de las veces se escriben a mano y, en comparación con la mayoría de las operaciones que puede realizar un programa, incluso el caso de uso más dinámico (buscar métodos manualmente en tiempo de ejecución) es tan insignificante que realmente no debería preocuparse. sobre eso
Otra consideración: cuando compila un programa con símbolos incrustados, esos símbolos ocupan espacio en su binario. Tampoco deberías preocuparte por eso porque: