/ / Quand NSObject ne serait-il pas indiqué comme classe parent? - objectif-c, classe, nsobject

Quand NSObject ne serait-il pas indiqué comme classe parent? - objectif-c, classe, nsobject

Par exemple:

@interface Fraction: NSObject {
...

Quand ne serait pas NSObject être utilisé et est NSObject la classe parente ultime pour toutes les autres classes?

N'hésitez pas à me corriger si vous utilisez une terminologie erronée.

Réponses:

4 pour la réponse № 1

Si j'écrivais une sous-classe de NSView, j'écrirais:

@interface Fraction: NSView {...

parce que ma classe hérite de NSView. Les classes en Objective-C héritent d'une seule classe parente. Au fur et à mesure que vous remontez la chaîne de NSView (à sa classe parente, NSResponder), vous constaterez qu'il héritera finalement de NSObject.

Je ne suis pas sûr de la deuxième partie de votrequestion. Je pense que toutes les classes de Cocoa Frameworks d’Apple héritent finalement de NSObject, mais ne me citez pas à ce sujet. Il n’ya aucune raison, en Objective-C, pourquoi il ne pourrait pas y avoir d’autres objets racine (sinon Objective-C ne serait utilisé que sur des systèmes Apple). Cependant, dans Cocoa, NSObject est la racine.


5 pour la réponse № 2

Dans toute application Cocoa, si vous examinez l’arborescence de la classe d’exécution, vous trouverez cinq classes principales: NSObject, Object, NSProxy, NSMessageBuilder et. NSZombie.

La plupart des objets ordinaires de votre application serontdescendant de NSObject. Object est la classe racine d'origine des débuts d'Objective-C et il a été remplacé par NSObject lorsque NeXT développait Enterprise Objects Framework.

NSMessageBuilder est utilisé par le moteur d'exécution pourtransfert de message. NSProxy est utilisé par l'implémentation des objets distribués pour traiter les messages de marshaling à envoyer aux objets dans d'autres processus ou même sur d'autres hôtes. NSZombie est une classe utilisée pour le débogage des fuites de mémoire.


5 pour la réponse № 3

Cocoa a deux classes racines: NSObject et NSProxy.

NSObject est la classe racine de presque tous les objets Cocoa.

NSProxy est une superclasse abstraite définissant une API pour les objets faisant office de remplaçants pour d’autres objets ou pour des objets n’existant pas encore. Elle est la classe racine de classes telles que NSDistantObject.

Les deux classes implémentent le protocole NSObject.

Il est également possible d’écrire votre propre Objective Cles classes qui n'ont pas de classe racine, mais vous ne le ferez probablement jamais, et vous ne pourrez pas l'utiliser avec Cocoa à peu près tant que vous n'implémenteriez pas le protocole NSObject, et même dans ce cas, son utilisation serait douteuse.