ios - category重写系统方法的调用顺序是怎么样的?
天蓬老师
天蓬老师 2017-04-18 09:42:19
0
2
591

我知道category方法是可以覆盖系统的方法,但是当有几个category重写同一个方法的时候调用顺序是怎么样子的啊?我开始写代码测试了一下,看不出来是按什么顺序来的,总是后面创建的category的方法被调用,其他的都被覆盖了。。。很想知道这是为什么,怎么证实这一点,依据是什么。。。有知道的朋友指点一下下咯☺

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(2)
伊谢尔伦

Pour envoyer des messages selon la fonction principale void objc_msgSend(id self,SEL cmd,...) dans le mécanisme de transmission des messages d'exécution, recherchez d'abord la méthode appelante de la classe actuelle, si elle n'est pas trouvée, continuez à l'appeler depuis sa classe parent En recherchant couche par couche, si la même méthode est réécrite pour la catégorie, alors pendant le processus de livraison du message, la méthode de la catégorie sera trouvée en premier et exécutée. Pour que plusieurs catégories appellent la même méthode, Xcode compile selon l'ordre de haut en bas dans buildPhases->Compile Sources au moment de l'exécution. Plusieurs catégories sont placées sur la pile lors de la compilation, selon la méthode du dernier entré, premier sorti. . En principe, celle post-compilée sera appelée en premier Lorsque objc_msgSend trouvera la méthode et l'appellera, elle ne continuera plus à transmettre des messages, elle forme donc ce qu'on appelle un remplacement. Cela ne signifie pas nécessairement que celui créé ultérieurement sera appelé. Cela dépend de son emplacement dans buildPhases->Compile Sources après la création.

Ty80

Remplacement selon l'ordre des méthodes de classification de chargement d'exécution
Généralement, la dernière méthode de chargement de la classification est implémentée

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal