Classe modèle typique en Swift: hériter ou non de NSObject ?
muqaddar
Administrateur
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...)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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é.
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).
Merci pour vos 2 réponses !