Classe modèle typique en Swift: hériter ou non de NSObject ?

muqaddarmuqaddar Administrateur
juin 2014 modifié dans Objective-C, Swift, C, C++ #1

La question peut p-e sembler idiote.


 


Autant en Obj-C toutes mes classes modèles héritaient de NSObject, autant en Swift faut-il "obligatoirement" le faire ? Dans la session 402, ils montrent les 2 options...


 


Je suppose que l'intérêt vient de tout ce que peut apporter NSObject comme méthodes et les protocoles associés (NSCopying...)


Réponses

  • AliGatorAliGator Membre, Modérateur
    Je ne pense pas qu'il y ait un réel intérêt dans la pratique.

    Au pire à  l'usage tu pourras peut-être te rendre compte à  un moment de "tiens merde j'ai besoin d'un truc que j'ai pas si je sous-classe pas NSObject" et de rajouter l'héritage ensuite (on manque encore de pratique / d'expérience encore) mais je pense que dans 90% des cas on n'en a pas l'utilité.
  • samirsamir Membre
    juin 2014 modifié #3

    Hello,


     


    Une classe Swift héritant de NSObject :


     


    1. Est une classe Objective C.


    2. Utilise objc_msgSend pour la majorité des appels de ces méthodes.


    3. Fournit les métadonnées des méthodes,... au Runtime Objective C.


     


    Une classe Swift qui n'hérite pas de NSObject :


     


    1. Est une classe Objective C mais qui n'implémente pas toutes les méthodes NSObject mais quelques-unes pour garder la compatibilité. 


     


    2. N'utilise pas objc_msgSend pour les appels de méthode.


    3. Ne fournit pas de métadonnées...


     


    Donc on sous-classe avec NSObject si on a besoin de la flexibilité du runtime sinon pas NSObject.


     


    Ne pas avoir NSObject comme classe mere peut améliorer les performances (selon les ingénieurs Apple).


  • muqaddarmuqaddar Administrateur

    Merci pour vos 2 réponses !


Connectez-vous ou Inscrivez-vous pour répondre.