Question

Par exemple:

@interface Fraction: NSObject {
...

n'utiliser et NSObject est la classe <=> mère ultime pour toutes les autres classes?

S'il vous plaît ne hésitez pas à me corriger une mauvaise terminologie utilisée.

Était-ce utile?

La solution

Si je rédigeais une sous-classe de NSView, je voudrais écrire:

@interface Fraction: NSView {...

parce que ma classe héritant de NSView. Les classes en Objective-C héritent une seule classe parente. Comme vous travaillez votre chemin jusqu'à la chaîne de NSView (à sa classe parente, NSResponder), vous constaterez qu'il hérite finalement de NSObject.

Je ne suis pas sûr de la deuxième partie de votre question. Je pense que toutes les classes dans les cadres Cocoa d'Apple a finalement hériter de NSObject, mais ne me citez pas là-dessus. Il n'y a aucune raison, en Objective-C, pourquoi il ne pouvait y avoir d'autres objets racine (sinon Objective-C ne sera utilisé que sur les systèmes d'Apple). Cependant, dans le cacao, NSObject est la racine.

Autres conseils

Dans une application Cocoa, si vous examinez l'arbre de la classe d'exécution, vous trouverez cinq classes de racines:. NSObject, objet, NSProxy, NSMessageBuilder et NSZombie

La plupart des objets ordinaires dans votre application seront les descendants de NSObject. Object est la classe racine d'origine dès les premiers jours de l'Objective-C, et il a été remplacé par NSObject quand NeXT a été le développement de l'Enterprise Objects Framework.

NSMessageBuilder est utilisé par le moteur d'exécution pour le transfert des messages. NSProxy est utilisé par la mise en œuvre des objets distribués pour traiter les messages marshaling d'envoyer des objets dans d'autres processus ou même sur d'autres hôtes. NSZombie est une classe qui est utilisée pour le débogage des fuites de mémoire.

Le cacao a deux classes de 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 qui agissent comme stand-ins pour d'autres objets ou pour des objets qui n'existent pas encore, et est la classe racine pour les classes comme NSDistantObject.

Les deux classes implémentent le protocole NSObject.

Il est également possible d'écrire vos propres classes Objective C qui ne disposent pas d'une classe racine, mais vous feriez sans doute jamais cela, et vous ne seriez pas en mesure de l'utiliser avec Cocoa pour quoi que ce soit à moins que vous aussi inséré le protocole NSObject, et même il serait alors l'utilisation douteuse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top