dans l'objectif-c, je peux faire quelque chose comme pour créer la spécification d'une classe MyViewController qui implémente le protocole UITEXTINUPUTDelerate. Maintenant, ce protocole a plusieurs méthodes requises. Je pense donc que le compilateur ne laisserait pas le code compiler du tout à moins que ces méthodes n'avaient en réalité que des implémentations dans le fichier .m. Neuf, cela compile. Le compilateur fait bec avertissements em>, il est donc évidemment détectant que je n'ai pas implémenté les méthodes requises, mais je me demande pourquoi il est logique de permettre à cela de compiler du tout, de la part de la langue concepteur. p> p>
3 Réponses :
Vous obtenez une erreur de compilateur lorsque le code ne peut pas être compilé. Ne pas mettre en œuvre une méthode n'empêche pas le code d'être compilé car l'objectif-c est une langue dynamique. Cela signifie que les méthodes ne sont pas directement liées, leur emplacement n'a donc pas besoin d'être connu au moment de la compilation. Les avertissements signifient que quelque chose pourrait causer des erreurs au moment de l'exécution, mais que le code a compilé avec succès. P>
Comme Ughoavgfhw a souligné, ce n'est pas une erreur car la nature dynamique de la langue permet de faire ajouter ces méthodes au moment de l'exécution. Ce n'est pas parce que la méthode n'est pas trouvée au moment de la compilation ne signifie pas que ce ne sera pas là au moment de l'exécution. P>
Ce n'est que parce que Code compile ne signifie pas qu'il ne peut pas se bloquer. Le compilateur laissera toutes sortes de bugs à travers. Un débogueur est ce que vous êtes après.