Wat betekent de NS prefix betekenen?

stemmen
501

Vele klassen in Cocoa / Cocoa Touch hebben de NS prefix. Wat betekent het?

De vraag is gesteld op 23/01/2009 om 18:22
bron van user
In andere talen...                            


11 antwoorden

stemmen
736

De oorspronkelijke code voor de Cocoa frameworks kwam van de NeXTSTEP bibliotheken Foundation en AppKit (die namen worden nog steeds gebruikt door Apple's Cocoa frameworks) en de NextStep ingenieurs ervoor gekozen om hun symbolen voorvoegsel NS.

Omdat Objective-C is een uitbreiding van C en derhalve geen namespaces hebben als in C ++, moeten symbolen worden voorafgegaan door een uniek voorvoegsel zodat ze niet botsen. Dit is bijzonder belangrijk voor symbolen vastgesteld in een.

Als u een toepassing schrijven, zodat je code waarschijnlijk alleen ooit om uw symbolen te gebruiken, hoeft u geen zorgen te maken over dit. Maar als je een kader of de bibliotheek voor het gebruik van anderen aan het schrijven bent, moet je ook voorvoegsel je symbolen met een uniek voorvoegsel. CocoaDev heeft een pagina waar veel ontwikkelaars in de Cocoa gemeenschap hun "gekozen" voorvoegsels heb opgesomd. U kunt ook vinden dit SO discussie behulpzaam.

antwoordde op 23/01/2009 om 18:52
bron van user

stemmen
390

Het is uit de NeXTSTEP erfgoed.

antwoordde op 23/01/2009 om 18:24
bron van user

stemmen
140

N ext S TEP of N eXTSTEP / S un afhankelijk van wie u vraagt.

Zon had een vrij grote investering in OpenStep voor een tijdje. Voordat de zon de foto de meeste dingen ingevoerd in de fundering, hoewel het niet bekend was als de stichting toen, werd voorafgegaan door NX , voor N e X T, en soms net voor de zon in beeld alles werd omgedoopt tot NS . De S hoogstwaarschijnlijk niet staan voor de zon toen, maar na de zon in de algemene consensus stapte was dat het stond voor Sun om hun betrokkenheid te eren.

Ik had eigenlijk een referentie voor deze, maar ik kan het niet vinden op dit moment. Ik zal de post updaten als / wanneer ik het weer vinden.

antwoordde op 23/01/2009 om 19:03
bron van user

stemmen
50

Het is de NextStep (= NS) erfgoed. NeXT was de computer bedrijf dat Steve Jobs gevormd nadat hij Apple stoppen in 1985, en NextStep was dat het samen-besturingssysteem (UNIX based) met de taal en runtime Obj-C. Samen met zijn bibliotheken en gereedschappen, werd NextStep later omgedoopt OpenStep, die op zijn beurt later Cocoa (die ook de naam op een API die NeXT ontwikkeld samen met Sun was).

Deze verschillende namen zijn eigenlijk heel verwarrend (vooral omdat een aantal van de namen verschilt alleen in welke tekens hoofdletters of kleine letters ..), probeer dit voor een uitleg:

TheMerger OpenstepConfusion

antwoordde op 23/01/2009 om 19:01
bron van user

stemmen
38

Van Apple's developer docs:

Historisch Opmerking: Als je je afvraagt ​​waarom zo veel van de lessen die je tegenkomt hebben een NS-prefix, is het gevolg van het verleden van Cocoa en Cocoa Touch. Cacao begon het leven als de verzamelde kaders gebruikt om apps voor de NeXTStep besturingssysteem te bouwen. Toen Apple NeXT terug gekocht in 1996, een groot deel van NeXTStep werd opgenomen in OS X, met inbegrip van de bestaande klasse namen. Cacao Touch werd geïntroduceerd als IOS equivalent van cacao; sommige klassen zijn beschikbaar in zowel Cocoa en Cocoa Touch, maar er zijn ook een groot aantal klassen die uniek zijn voor elk platform. Twee letters voorvoegsels als NS en UI (voor User Interface elementen op iOS) zijn gereserveerd voor gebruik door Apple.

Bron: Programmeren met Objective-C

antwoordde op 19/03/2013 om 05:53
bron van user

stemmen
21

Van Cocoa_ (API) Wikipedia :

(Nadruk toegevoegd)

Cocoa lessen beginnen met het acroniem "NS" (staand noch voor de NeXT-Zon creatie van OpenStep , of voor de originele proprietary term voor de OpenStep kader NeXTSTEP ): NSString, NSArray, etc.

Foundation Kit , of meer algemeen gewoon Foundation , verscheen voor het eerst in OpenStep . Op Mac OS X, het is gebaseerd op de Core Foundation. Foundation is een generieke objectgeoriënteerde bibliotheek verschaffen string en waarde manipulatie, containers en iteratie, gedistribueerde, draaien loops, en andere functies die niet direct gekoppeld aan de grafische gebruikersinterface. Het voorvoegsel "NS" , die wordt gebruikt voor alle klassen en constanten in het kader, komt uit Cocoa OPENSTEP erfgoed, die gezamenlijk is ontwikkeld door NeXT en Sun .

antwoordde op 27/10/2011 om 19:08
bron van user

stemmen
10

De volgende keer de NextStep API werden definiëren (in tegenstelling tot de NEXTSTEP besturingssysteem), gebruikten ze prefix NX, zoals in NXConstantString. Toen ze schreven de OpenStep specificatie zon (niet te verwarren met de OPENSTEP besturingssysteem) vroeger NS prefix, zoals in NSObject.

antwoordde op 24/01/2009 om 03:32
bron van user

stemmen
6

Bill Bumgarner aka @bbum, die zou moeten weten , geplaatst op de CocoaBuilder mailing list in 2005 :

Zon in beeld een beetje nadat de NS prefix was in het spel komen. De NS prefix kwam tot stand in de openbare API's tijdens de verhuizing van NeXTSTEP 3,0 tot NeXTSTEP 4,0 (ook bekend als OpenStep). Voorafgaand aan 4.0, een handvol van de tekens die de NX prefix, maar de meeste klassen die door het systeem bibliotheken werden helemaal niet voorafgegaan - List, hash, Uitzicht, etc ...

Het lijkt erop dat iedereen het erover eens dat het voorvoegsel NX (voor NeXT) werd gebruikt tot 1993/1994, en Apple's docs zeggen :

De officiële OpenStep API, gepubliceerd in september 1994, was de eerste die de API verdeeld tussen Stichting en Application Kit en de eerste die het voorvoegsel “NS” te gebruiken.

antwoordde op 05/09/2015 om 04:04
bron van user

stemmen
5

In principe NS komt van N ext S TEP, het originele besturingssysteem dat werd Mac OS X wanneer Apple Next verworven.

Ik wil iets anders uit te leggen en dat is precies waarom het nodig is.

In C ++ zijn er namespaces en bijna alles mag in std

Dit is waarom je hebt std :: string.

Namespaces worden gebruikt, zodat het moeilijker voor u om een ​​fout te maken en u kunt uw eigen klasse snaar te schrijven zonder in strijd met het systeem één.

Objective-C is superset van C, maar het omvat niet namespaces en om dezelfde reden boven alles systeem klassen zijn preffixed met NS of een andere vreemde preffix.

Dit ding is hetzelfde van hoe al DirectX klassen zijn preffixed met D3D en hoe al OpenGL klassen zijn preffixed met gl .

Dit betekent dat je niet moet gebruiken NS om uw eigen lessen te noemen en als je ziet NS , CA in Core Animation of CG in Core Graphics je begrijpen dat dit is een oproep aan een systeem kader.

Snelle veranderingen deze conventie, omdat snelle ondersteunt namespacing en brengt de kern types zoals String het NS equivalenten.

antwoordde op 08/01/2017 om 12:27
bron van user

stemmen
1

Het is uit de NeXTSTEP erfgoed

antwoordde op 09/06/2019 om 12:30
bron van user

stemmen
1

Volgende stap. Het is een overblijfsel van toen Objective-C werd door naast NeXTStep (later os x) te schrijven en alle bijbehorende toepassingen, etc. Ze representeren elementen die geen deel uitmaken van de originele C onderbouwing, bijvoorbeeld, er geen 'string' element C, zodat in Objective-C, is het een bijkomend funderingselement 'NSString.

antwoordde op 21/06/2017 om 06:32
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more