编程知识 cdmana.com

Analyse approfondie des principes sous - jacents de l'Association dyld - objc dans iOS

AppDémarrage etdylbChargement

  • Nous savons que dyld Processus de chargement pour,C'est - à - dire dans App Démarrer l'exécution de démarrage main Avant la fonction,dylb Principalement configuré avec des variables d'environnement、Cache partagé、Initialisation du programme principal、Insérer une bibliothèque dynamique、Lier le programme principal、Lier les bibliothèques dynamiques、Faible liaison symbolique、Exécuter la méthode d'initialisation、Recherche de l'entrée du programme principal et une série de traitements,Pour plus de détails, voir mon blog précédent:iOSAnalyse approfondieAppDémarragedyldPrincipe sous - jacent du processus de chargement;
  • In main Pendant l'exécution de la fonction,Quand dyld Chargement jusqu'au début du programme principal lié , Appel récursif recursiveInitialization Fonctions.
  • recursiveInitialization Première exécution de la fonction , En cours libsystem Initialisation de . Le processus d'exécution est le suivant::recursiveInitialization -> doInitialization -> doModInitFunctions -> libSystemInitialized .
  • libsystem Initialisation de , Il va appeler libdispatch_init , libdispatch De init Appelle _os_object_init , Cette fonction appelle _objc_init.
  • _objc_init Enregistré et enregistré map_images , load_images , unmap_image Adresse de la fonction, Et donc dans le processus de chargement de notre classe .

_objc_init Analyse du code source

Un.、 _objc_init Méthode de base
  • objc4-781 Source officielle_objc_init La méthode est la suivante::

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

Scroll to Top