Co oznacza przedrostek NS?

Wiele klas w Cocoa / Cocoa Touch ma przedrostek NS. Co to znaczy?

Author: ThisClark, 2009-01-23

10 answers

Pochodzi z NeXTSTEP .

 403
Author: Olaf Kock,
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.

 747
Author: Barry Wark,
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.

 145
Author: David Holm,
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ć:

TheMerger OpenstepConfusion

 51
Author: Gregor,
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

 39
Author: Jonathan Lin,
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.

 21
Author: chown,
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.

 10
Author: ,
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
2009-01-24 02:32:46

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".

 6
Author: Simon Woodside,
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.

 6
Author: Daniel Georgiev,
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".

 1
Author: Ramprasath Selvam,
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