Co oznacza przedrostek NS?
Wiele klas w Cocoa / Cocoa Touch ma przedrostek NS. Co to znaczy?
10 answers
Pochodzi z NeXTSTEP .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-19 06:11:14
Oryginalny kod dla frameworków Cocoa pochodzi z NeXTSTEP libraries Foundation i AppKit( nazwy te są nadal używane przez frameworki Cocoa firmy Apple), a inżynierowie NextStep zdecydowali się na prefiks swoich symboli za pomocą NS.
Ponieważ Objective-C jest rozszerzeniem C, a więc nie ma przestrzeni nazw, jak w C++, symbole muszą być poprzedzone unikalnym prefiksem, aby nie zderzały się ze sobą. Jest to szczególnie ważne dla symboli zdefiniowanych w ramach.
Jeśli pisząc aplikację, tak aby Twój kod był prawdopodobnie kiedykolwiek używany przez twoje symbole, nie musisz się o to martwić. Ale jeśli piszesz framework lub bibliotekę do użytku innych, powinieneś również przedrostek swoich symboli z unikalnym prefiksem. CocoaDev ma Stronę gdzie wielu programistów w społeczności Cocoa wymieniło swoje" wybrane " prefiksy. Możesz również znaleźć ta dyskusja pomocna.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 17:33:44
N eXTS TEP lub N eXTSTEP/ S un w zależności od tego, kogo pytasz.
Sun miał dość dużą inwestycję w OpenStep przez jakiś czas. Zanim Sun wszedł na zdjęcie większość rzeczy w Fundacji, Mimo że nie była wtedy znana jako Fundacja, została poprzedzona prefiksem NX , dla N e X T, a gdzieś tuż przed wejściem Sun wszystko zostało przemianowane na NS . S najprawdopodobniej nie stał na słońcu potem, ale po Sun wkroczył w ogólnym konsensusie było to, że stoi na Sun, aby uhonorować ich zaangażowanie.
Miałem referencje do tego, ale nie mogę go teraz znaleźć. Będę aktualizować post, jeśli / kiedy znajdę go ponownie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-08 12:36:44
Jest dziedzictwem NextStep (=NS). NeXT był firmą komputerową, którą Steve Jobs założył po odejściu z Apple w 1985 roku, a NextStep był systemem operacyjnym (opartym na Uniksie) wraz z językiem Obj-C i runtime. Wraz z bibliotekami i narzędziami NextStep został później przemianowany na OpenStep (co było również nazwą API, które NeXT rozwijało się razem z Sunem), które z kolei później stało się Cocoa.
Te różne nazwy są rzeczywiście dość mylące (zwłaszcza, że niektóre z nazwy różnią się tylko wielkimi lub małymi literami..), spróbuj to wyjaśnić:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 06:11:03
Z dokumentacji programistycznej Apple:
Uwaga historyczna: Jeśli zastanawiasz się, dlaczego tak wiele klas, które napotkasz, ma przedrostek NS, jest to spowodowane przeszłą historią Cocoa i Cocoa Touch. Cocoa zaczęło życie jako zebrane frameworki używane do tworzenia aplikacji dla systemu operacyjnego NeXTStep. Kiedy Apple zakupiło NeXT back w 1996 roku, większość NeXTStep została włączona do OS X, włączając w to istniejące nazwy klas. Cocoa Touch został wprowadzony jako iOS odpowiednik Cocoa; niektóre klasy są dostępne zarówno w Cocoa, jak i Cocoa Touch, choć istnieje również duża liczba klas unikalnych dla każdej platformy. Przedrostki dwuliterowe, takie jak NS i UI (dla elementów interfejsu użytkownika w systemie iOS), są zarezerwowane dla Apple.
Źródło: Programowanie z Objective-C
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-19 04:53:08
From Cocoa_ (API) Wikipedia :
(podkreślenie dodane)
Klasy Cocoa zaczynają się od akronimu " NS " (stojąc albo za NeXT - Tworzenie OPENSTEP , lub dla oryginalnego zastrzeżonego terminu dla frameworka OpenStep, NeXTSTEP): NSString, NSArray, itp.
Foundation Kit , lub częściej po prostu Foundation, po raz pierwszy pojawił się w OpenStep . Na Mac OS X, opiera się na Core Fundacja. Fundacja jest generic object-oriented library providing string and value manipulacja, kontenery i iteracja, przetwarzanie rozproszone, uruchamianie pętli i innych funkcji, które nie są bezpośrednio związane z graficznym interfejs użytkownika. przedrostek " NS " , używany dla wszystkich klas i stałych w framework, pochodzi z OPENSTEP spuścizny Cocoa, która wspólnie opracowane przez NeXT i Sun.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-16 19:47:56
Kiedy NeXT definiowali interfejs API NextStep (w przeciwieństwie do systemu operacyjnego NEXTSTEP), używali prefiksu NX, jak w NXConstantString. Kiedy pisali specyfikację OpenStep za pomocą Sun (nie mylić z systemem operacyjnym OPENSTEP), używali prefiksu NS, jak w NSObject.
Bill Bumgarner aka @ bbum, który powinien wiedzieć, umieścił na liście dyskusyjnej CocoaBuilder w 2005:
Sun wszedł na obrazek trochę po tym, jak pojawił się prefiks NS. Prefiks NS pojawił się w publicznych API podczas przejścia z NeXTSTEP 3.0 do NeXTSTEP 4.0 (znany również jako OpenStep). Przed 4.0, a garstka symboli używała przedrostka NX, ale większość klas dostarczanych przez biblioteki systemowe w ogóle nie były poprzedzone -- List, Hashtable, Widok, itd...
Wydaje się, że wszyscy zgadzają się, że prefiks NX (dla NeXT) był używany do 1993/1994, a dokumenty Apple mówią :
Oficjalne API OpenStep, opublikowane we wrześniu 1994 roku, było pierwszym, który podzielił API między Foundation i Application Kit i pierwszym, który użył prefiksu "NS".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:45
Zasadniczo NS pochodzi z NextSTEP, oryginalnego systemu operacyjnego, który stał się Mac OS X, gdy Apple przejęło następny.
Chcę wyjaśnić coś innego i właśnie dlatego jest to potrzebne.
W C++ są przestrzenie nazw i prawie wszystko wchodzi w std
Dlatego masz std:: string.
Przestrzenie nazw są używane, więc trudniej jest popełnić błąd i można napisać własny łańcuch klas bez kolidowania z system pierwszy.
Objective-C jest supersetem C, ale nie zawiera przestrzeni nazw i z tego samego powodu przede wszystkim wszystkie klasy systemowe są prefixowane przez NS lub jakiś inny dziwny prefix.
To jest to samo, jak wszystkie klasy DirectX są prefixowane z D3D i jak wszystkie klasy OpenGL są prefixowane z gl.
Oznacza to, że nie powinieneś używać NS {[2] } do nazywania własnych klas i gdy widzisz NS, CA {[2] } 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 jej podstawowe typy, takie jak String, do odpowiedników NS.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-08 12:27:45
NextStep. Z czasów, gdy objective-c został stworzony przez obok napisz nextstep (późniejszy os x) i wszystkie powiązane aplikacje, itp. Oni reprezentują elementy, które nie są częścią oryginalnego C, na przykład, nie ma elementu 'string' w C, więc w objective-c, jest to dodatkowy element fundamentowy "NSString".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-27 09:29:13