Antworten:
Es ist aus dem NeXTSTEP- Erbe.
Der ursprüngliche Code für die Cocoa-Frameworks stammt von der NeXTSTEP- Bibliothek Foundation und AppKit (diese Namen werden immer noch von Apples Cocoa-Frameworks verwendet), und die NextStep-Ingenieure haben beschlossen, ihren Symbolen NS voranzustellen.
Da Objective-C eine Erweiterung von C ist und daher keine Namespaces wie in C ++ hat, muss Symbolen ein eindeutiges Präfix vorangestellt werden, damit sie nicht kollidieren. Dies ist besonders wichtig für Symbole, die in einem Framework definiert sind.
Wenn Sie eine Anwendung schreiben, sodass Ihr Code wahrscheinlich immer nur Ihre Symbole verwendet, müssen Sie sich darüber keine Gedanken machen. Wenn Sie jedoch ein Framework oder eine Bibliothek für andere Benutzer schreiben, sollten Sie Ihren Symbolen auch ein eindeutiges Präfix voranstellen. CocoaDev hat eine Seite, auf der viele Entwickler in der Cocoa-Community ihre "ausgewählten" Präfixe aufgelistet haben. Möglicherweise finden Sie diese SO-Diskussion auch hilfreich.
N eXT S TEP oder N eXTSTEP / S un je nachdem, wen Sie fragen.
Sun hatte eine Zeit lang eine ziemlich große Investition in OpenStep. Bevor Sun das Bild betrat, wurde den meisten Dingen in der Stiftung, obwohl sie damals nicht als Stiftung bekannt war, NX für N e X T vorangestellt , und kurz bevor Sun das Bild betrat, wurde alles in NS umbenannt . Das S stand damals höchstwahrscheinlich nicht für Sun, aber nachdem Sun in den allgemeinen Konsens eingetreten war, war es für Sun, ihre Beteiligung zu ehren.
Ich hatte tatsächlich eine Referenz dafür, aber ich kann sie momentan nicht finden. Ich werde den Beitrag aktualisieren, wenn ich ihn wieder finde.
Es ist das Erbe von NextStep (= NS). NeXT war die Computerfirma, die Steve Jobs gründete, nachdem er Apple 1985 verlassen hatte, und NextStep war das Betriebssystem (UNIX-basiert) zusammen mit der Obj-C-Sprache und der Laufzeit. Zusammen mit seinen Bibliotheken und Tools wurde NextStep später in OpenStep umbenannt (was auch der Name einer API war, die NeXT zusammen mit Sun entwickelte), die später zu Cocoa wurde.
Diese verschiedenen Namen sind eigentlich ziemlich verwirrend (zumal sich einige der Namen nur darin unterscheiden, welche Zeichen in Groß- oder Kleinbuchstaben geschrieben sind). Versuchen Sie dies zur Erklärung:
Aus Apples Entwicklerdokumenten:
Historischer Hinweis: Wenn Sie sich fragen, warum so viele der Klassen, denen Sie begegnen, ein NS-Präfix haben, liegt dies an der Vergangenheit von Cocoa und Cocoa Touch. Cocoa begann sein Leben als die gesammelten Frameworks, mit denen Apps für das NeXTStep-Betriebssystem erstellt wurden. Als Apple 1996 NeXT kaufte, wurde ein Großteil von NeXTStep in OS X integriert, einschließlich der vorhandenen Klassennamen. Cocoa Touch wurde als iOS-Äquivalent zu Cocoa eingeführt. Einige Klassen sind sowohl in Cocoa als auch in Cocoa Touch verfügbar. Es gibt jedoch auch eine große Anzahl von Klassen, die für jede Plattform einzigartig sind. Präfixe aus zwei Buchstaben wie NS und UI (für Benutzeroberflächenelemente unter iOS) sind für die Verwendung durch Apple reserviert.
Quelle: Programmierung mit Objective-C
Aus Cocoa_ (API) Wikipedia :
(Betonung hinzugefügt)
Kakaoklassen beginnen mit dem Akronym "NS" (steht entweder für die NeXT-Sun-Erstellung von OpenStep oder für den ursprünglichen proprietären Begriff für das OpenStep-Framework NeXTSTEP ): NSString, NSArray usw.
Foundation Kit , oder besser gesagt Foundation , erschien zuerst in OpenStep . Unter Mac OS X basiert es auf Core Foundation. Foundation ist eine generische objektorientierte Bibliothek, die die Manipulation von Zeichenfolgen und Werten, Container und Iteration, verteiltes Rechnen, Ausführungsschleifen und andere Funktionen bietet, die nicht direkt mit der grafischen Benutzeroberfläche verbunden sind. Das Präfix "NS" , das für alle Klassen und Konstanten im Framework verwendet wird, stammt aus dem OPENSTEP-Erbe von Cocoa, das von NeXT und Sun gemeinsam entwickelt wurde .
Als NeXT die NextStep-API definierte (im Gegensatz zum NEXTSTEP-Betriebssystem), wurde das Präfix NX wie in NXConstantString verwendet. Beim Schreiben der OpenStep-Spezifikation mit Sun (nicht zu verwechseln mit dem OPENSTEP-Betriebssystem) wurde das NS-Präfix wie in NSObject verwendet.
Grundsätzlich stammt NS von N ext S TEP, dem ursprünglichen Betriebssystem, das zu Mac OS X wurde, als Apple Next übernahm.
Ich möchte etwas anderes erklären und deshalb wird es genau benötigt.
In C ++ gibt es Namespaces und fast alles geht in std
Deshalb haben Sie std :: string.
Namespaces werden verwendet, sodass es für Sie schwieriger ist, einen Fehler zu machen, und Sie können Ihre eigene Klassenzeichenfolge schreiben, ohne mit der Systemzeichenfolge in Konflikt zu geraten.
Objective-C ist eine Obermenge von C, enthält jedoch keine Namespaces. Aus dem gleichen Grund wird allen Systemklassen vor allem NS oder ein anderes seltsames Präfix vorangestellt.
Dies gilt auch für die Präfixierung aller DirectX-Klassen mit D3D und für die Präfixierung aller OpenGL-Klassen mit gl .
Dies bedeutet, dass Sie NS nicht verwenden sollten, um Ihre eigenen Klassen zu benennen. Wenn Sie NS , CA in Core Animation oder CG in Core Graphics sehen, verstehen Sie, dass dies ein Aufruf eines Systemframeworks ist.
Swift ändert diese Konvention, da Swift den Namespace unterstützt und seine Kerntypen wie String den NS-Äquivalenten zuordnet.
Bill Bumgarner aka @bbum, der es wissen sollte , hat 2005 auf der CocoaBuilder-Mailingliste gepostet :
Sun betrat das Bild ein wenig, nachdem das NS-Präfix ins Spiel gekommen war. Das NS-Präfix wurde in öffentlichen APIs beim Wechsel von NeXTSTEP 3.0 zu NeXTSTEP 4.0 (auch als OpenStep bezeichnet) verwendet. Vor 4.0 verwendeten eine Handvoll Symbole das NX-Präfix, aber die meisten von den Systembibliotheken bereitgestellten Klassen hatten überhaupt kein Präfix - Liste, Hashtabelle, Ansicht usw.
Es scheint, dass alle zustimmen, dass das Präfix NX (für NeXT) bis 1993/1994 verwendet wurde, und Apples Dokumente sagen :
Die offizielle OpenStep-API, die im September 1994 veröffentlicht wurde, war die erste, die die API zwischen Foundation und Application Kit aufteilte, und die erste, die das Präfix „NS“ verwendete.