Frage

Zum Beispiel:

@interface Fraction: NSObject {
...

Wenn nicht verwendet werden NSObject und ist die Mutterklasse für alle anderen Klassen NSObject?

Bitte fühlen Sie sich frei, mich auf jede falsche Terminologie zu korrigieren.

War es hilfreich?

Lösung

Wenn ich eine Unterklasse von NSView zu schreiben, würde ich schreiben:

@interface Fraction: NSView {...

, weil meine Klasse von NSView erbt. Klassen in Objective-C erben von nur einer einzigen übergeordneten Klasse. Wie Sie Ihren Weg nach oben die Kette von NSView (zu seiner übergeordneten Klasse, NSResponder) arbeiten, würden Sie feststellen, dass es schließlich von NSObject erbt.

Ich bin über den zweiten Teil Ihrer Frage nicht sicher. Ich denke, alle Klassen in Apples Cocoa-Frameworks schließlich von NSObject erben, aber zitieren Sie mich nicht daran. Es gibt keinen Grund, in Objective-C, warum es nicht andere Wurzelobjekte sein könnte (sonst Objective-C würde nur auf Apple-Systemen verwendet werden). Doch in Cocoa, NSObject ist die Wurzel.

Andere Tipps

In jeder Cocoa-Anwendung, wenn Sie den Laufzeit-Klassenbaum untersuchen, werden Sie fünf Stammklassen finden. NSObject, Objekt, NSProxy, NSMessageBuilder und NSZombie

Die meisten gewöhnlichen Objekten in Ihrer App wird von NSObject abstammen. Objekt ist die ursprüngliche Stammklasse aus den frühen Tagen des Objective-C, und es wurde von NSObject abgelöst, wenn NeXT Entwicklung war die Enterprise Objects Framework.

NSMessageBuilder wird durch die Laufzeit für die Nachrichtenweiterleitung verwendet. NSProxy wird durch die verteilte Objekte Implementierung verwendet umgehen Nachrichten mit Marshalling auf Objekte in anderen Prozessen zu senden oder sogar auf anderen Hosts. NSZombie ist eine Klasse, die für das Debuggen von Speicherlecks verwendet wird.

Cocoa hat zwei Stammklassen. NSObject und NSProxy

NSObject ist die Wurzelklasse fast alle Cocoa-Objekte.

NSProxy ist eine abstrakte Superklasse eine API für Objekte definieren, die für andere Objekte oder Objekte als Stand-In wirken, die noch nicht vorhanden ist, und ist die Wurzelklasse für Klassen wie NSDistantObject.

Beiden Klassen implementieren das NSObject Protokoll.

Es ist auch möglich, eigene Objective C-Klassen zu schreiben, die nicht über eine Wurzelklasse haben, aber Sie würden wahrscheinlich nie tun, dass, und Sie würden nicht in der Lage sein, mit Kakao zu verwenden, um so gut wie nichts, wenn Sie auch die Umsetzung NSObject Protokoll, und selbst dann wäre es von zweifelhaftem nutzen sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top