Wiele zajęć w Cocoa / Cocoa Touch ma prefiks NS. Co to znaczy?
ios
objective-c
cocoa
cocoa-touch
Martin08
źródło
źródło
Oryginalny kod frameworka Cocoa pochodzi z Fundacji bibliotek NeXTSTEP i AppKit (te nazwy są nadal używane przez frameworki Cocoa firmy Apple), a inżynierowie NextStep postanowili poprzedzić swoje symbole NS.
Ponieważ Objective-C jest rozszerzeniem C i dlatego nie ma przestrzeni nazw jak w C ++, symbole muszą być poprzedzone unikalnym prefiksem, aby się nie kolidowały. Jest to szczególnie ważne w przypadku symboli zdefiniowanych w ramach.
Jeśli piszesz aplikację w taki sposób, że Twój kod prawdopodobnie używa tylko twoich symboli, nie musisz się tym martwić. Ale jeśli piszesz strukturę lub bibliotekę do użytku innych, powinieneś również poprzedzić swoje symbole unikalnym przedrostkiem. CocoaDev ma stronę, na której wielu programistów ze społeczności Cocoa wymieniło swoje „wybrane” prefiksy. Ta dyskusja SO może być również pomocna.
źródło
N eXT S TEP lub N eXTSTEP / S zależnie od tego, kogo pytasz.
Przez jakiś czas firma Sun miała dość dużą inwestycję w OpenStep. Zanim Sun pojawił się na zdjęciu, większość rzeczy w fundamencie, mimo że nie była wtedy znana jako fundacja, była poprzedzona NX , dla N e X T, a jakiś czas tuż przed pojawieniem się Sun na zdjęciu wszystko zostało przemianowane na NS . S najprawdopodobniej nie stać na słońcu następnie ale po Sun wszedł w ogólnym konsensusu było to, że stał na słońcu, aby uczcić ich zaangażowanie.
Właściwie miałem do tego odniesienie, ale nie mogę go teraz znaleźć. Zaktualizuję post, jeśli / kiedy go znajdę ponownie.
źródło
Jest to dziedzictwo NextStep (= NS). NeXT to firma komputerowa, którą Steve Jobs założył po odejściu z Apple w 1985 roku, a NextStep to system operacyjny (oparty na UNIX) wraz z językiem Obj-C i środowiskiem uruchomieniowym. Wraz z bibliotekami i narzędziami NextStep został później przemianowany na OpenStep (który był również nazwą interfejsu API opracowanego przez NeXT wraz z Sun), który z kolei później stał się Cocoa.
Te różne nazwy są w rzeczywistości dość mylące (zwłaszcza, że niektóre z nich różnią się tylko tym, że znaki są pisane wielkimi lub małymi literami ...), spróbuj tego w celu wyjaśnienia:
Połączenie OpenstepConfusion
źródło
Z dokumentacji programistów Apple:
Źródło: Programowanie w Objective-C
źródło
Z Cocoa_ (API) Wikipedia :
(podkreślenie dodane)
źródło
Kiedy NeXT definiowało API NextStep (w przeciwieństwie do systemu operacyjnego NEXTSTEP), używali przedrostka NX, jak w NXConstantString. Kiedy pisali specyfikację OpenStep z Sun (nie mylić z systemem operacyjnym OPENSTEP), używali przedrostka NS, jak w NSObject.
źródło
Zasadniczo NS pochodzi z N ext S TEP, oryginalnego systemu operacyjnego, który stał się Mac OS X, kiedy Apple nabył Next.
Chcę wyjaśnić coś jeszcze i właśnie dlatego jest to potrzebne.
W C ++ istnieją przestrzenie nazw i prawie wszystko idzie w std
Właśnie dlatego masz std :: string.
Przestrzenie nazw są używane, więc trudniej jest popełnić błąd i możesz napisać własny ciąg klasy bez konfliktu z systemem.
Cel C jest nadzbiorem C, ale nie obejmuje przestrzeni nazw iz tego samego powodu powyżej wszystkie klasy systemowe mają przedrostek NS lub jakiś inny dziwny przedrostek.
To samo dotyczy tego, jak wszystkie klasy DirectX są poprzedzone D3D i jak wszystkie klasy OpenGL są poprzedzone gl .
Oznacza to, że nie powinieneś używać NS do nazywania własnych klas, a kiedy widzisz NS , CA w Core Animation lub CG w Core Graphics, rozumiesz, że jest to wywołanie frameworka systemowego.
Swift zmienia tę konwencję, ponieważ Swift obsługuje przestrzeń nazw i mapuje swoje podstawowe typy, takie jak String, na odpowiedniki NS.
źródło
Bill Bumgarner aka @bbum, który powinien wiedzieć , opublikował na liście mailingowej CocoaBuilder w 2005 roku :
Wydaje się, że wszyscy zgadzają się, że przedrostek NX (dla NeXT) był używany do 1993/1994, a dokumenty Apple'a mówią :
źródło