Viele Klassen in Cocoa/Cocoa Touch haben das Präfix NS. Was bedeutet das?
...oder vielleicht das NeXT/Sun-Erbe (Sun war Teilnehmer des OpenStep-Konsortiums)
Viele Klassen in Cocoa/Cocoa Touch haben das Präfix NS. Was bedeutet das?
Der ursprüngliche Code für die Cocoa-Frameworks stammt aus dem NeXTSTEP Bibliotheken Foundation und AppKit (diese Namen werden immer noch von Apples Cocoa-Frameworks verwendet), und die NextStep-Ingenieure entschieden sich dafür, ihren Symbolen das Kürzel NS voranzustellen.
Da Objective-C eine Erweiterung von C ist und somit keine Namespaces wie in C++ hat, müssen Symbole mit einem eindeutigen Präfix versehen werden, damit sie nicht kollidieren. Dies ist besonders wichtig für Symbole, die in einem Framework definiert sind.
Wenn Sie eine Anwendung schreiben, bei der Ihr Code wahrscheinlich nur Ihre Symbole verwenden wird, müssen Sie sich darüber keine Gedanken machen. Wenn Sie jedoch ein Framework oder eine Bibliothek für die Verwendung durch andere schreiben, sollten Sie Ihren Symbolen ebenfalls ein eindeutiges Präfix voranstellen. CocoaDev hat eine Seite wo viele Entwickler der Cocoa-Community ihre "gewählten" Präfixe aufgelistet haben. Sie können auch finden diese SO-Diskussion hilfreich.
Ja, natürlich. In den anderen Antworten ist alles sehr schön dargelegt, deshalb habe ich mir nicht die Mühe gemacht, diese Informationen in meine zu kopieren. Tut mir leid, wenn das jemanden beleidigt - es macht mir nichts aus, wenn die akzeptierte Antwort sich in eine der anderen ändert (falls das möglich ist - ich habe das nie überprüft).
N eXT S TEP oder N eXTSTEP/ S Das hängt davon ab, wen Sie fragen.
Sun hatte eine Zeit lang eine ziemlich große Investition in OpenStep. Bevor Sun auf den Plan trat, wurden die meisten Dinge in der Foundation, auch wenn sie damals noch nicht als Foundation bekannt war, mit dem Präfix NX für N e X T, und irgendwann, kurz bevor Sun auf den Plan trat, wurde alles umbenannt in NS . Die S stand höchstwahrscheinlich nicht für Sun, aber nach dem Eingreifen von Sun herrschte allgemeiner Konsens darüber, dass es für Sun stand, um deren Beteiligung zu würdigen.
Ich hatte eigentlich eine Referenz dafür, aber ich kann sie im Moment nicht finden. Ich werde den Beitrag aktualisieren, wenn ich sie wieder finde.
Ich habe die gleiche Geschichte aus einer sehr zuverlässigen Quelle gehört; ich bin ziemlich sicher, dass dies die genaueste Antwort ist.
Ich habe eine Referenz gefunden: cocoabuilder.com/archive/cocoa/136618-was-does-ns-means.html
Es ist das NextStep (= NS)-Erbe. NeXT war die Computerfirma, die Steve Jobs gründete, nachdem er 1985 bei Apple aufgehört hatte, und NextStep war ihr Betriebssystem (UNIX-basiert) zusammen mit der Sprache und Laufzeitumgebung Obj-C. Zusammen mit seinen Bibliotheken und Werkzeugen wurde NextStep später in OpenStep umbenannt (was auch der Name einer API war, die NeXT zusammen mit Sun entwickelte), die wiederum später zu Cocoa wurde.
Diese verschiedenen Namen sind eigentlich ziemlich verwirrend (vor allem, da sich einige der Namen nur darin unterscheiden, welche Buchstaben groß- oder kleingeschrieben werden ), versuchen Sie dies für eine Erklärung:
Aus den Entwicklerdokumenten von Apple:
Historische Anmerkung: Wenn Sie sich fragen, warum so viele der Klassen, denen Sie begegnen, ein NS-Präfix haben, liegt das an der Vorgeschichte von Cocoa und Cocoa Touch. Cocoa war ursprünglich das gesammelte Framework zur Entwicklung von Anwendungen für das NeXTStep-Betriebssystem. Als Apple 1996 NeXT aufkaufte, wurde ein Großteil von NeXTStep in OS X übernommen, einschließlich der bestehenden Klassennamen. Cocoa Touch wurde als iOS-Äquivalent zu Cocoa eingeführt; einige Klassen sind sowohl in Cocoa als auch in Cocoa Touch verfügbar, obwohl es auch eine große Anzahl von Klassen gibt, die für jede Plattform einzigartig sind. Zweibuchstabige Präfixe wie NS und UI (für Benutzeroberflächenelemente auf iOS) sind für die Verwendung durch Apple reserviert.
Source : Programmieren mit Objective-C
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Ich ziehe es vor zu glauben, dass es "Namespace" bedeutet.