编程知识 cdmana.com

Analyse approfondie d'iOS objcPrincipe sous - jacent du mécanisme de transmission des messages msgsend

Un.、Jeter des briques pour attirer le jade

  • objc_msgSend() Le processus d'envoi du message est Adoption SEL Trouver IMP Processus .
  • objc_msgSend() C'est avec Langage d'assemblage Réalisé,L'avantage de l'utilisation de l'assemblage est:
    • Le processus d'envoi des messages doit être suffisamment rapide,Les langues de haut niveau doivent être traduites en langage d'assemblage au moment de l'exécution, Compilé pour être reconnu par la machine Binaires ,Ce processus de traduction peut être évité en utilisant l'assemblage,Peut être identifié plus rapidement par la machine;
    • Pour l'envoi du message,Il y a beaucoup d'arguments inconnus,Il y a beaucoup d'incertitude,Utiliser Registres assemblés Plus que C Ou C++ Beaucoup mieux..
  • objc_msgSend() Adoption de la compilation Cache de méthode de recherche rapide ,Appelez si vous pouvez le trouver TailCallCachedImp Mettre directement en cache la méthode et l'appeler,objc_msgSend() Voir l'article précédent pour une recherche rapide de:iOSAnalyse approfondieRuntimeDeobjc_msgSend“Recherche rapide”Principe de base.
  • Si vous ne trouvez pas dans le cache,Alors Sautez à CheckMiss ,Et ensuite exécuter Processus de recherche lent .objc_msgSend() Voir l'article précédent pour une recherche lente:

版权声明
本文为[ForeverWJ]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/10/20211013211741765k.html

Scroll to Top