De nombreuses classes Cocoa / Cocoa Touch ont le préfixe NS. Qu'est-ce que ça veut dire?
Que signifie le préfixe NS?
Le code original pour les cadres de cacao est venu de la NeXTSTEP Fondation des bibliothèques et AppKit (ces noms sont encore utilisés par les cadres Cocoa d'Apple), et les ingénieurs NextStep a choisi de préfixer leurs symboles avec NS.
Parce que Objective-C est une extension de C et n'a donc pas comme namespaces en C ++, les symboles doivent être préfixées par un préfixe unique afin qu'ils ne se touchent pas. Ceci est particulièrement important pour les symboles définis dans un cadre.
Si vous écrivez une application, telle que votre code ne seront probablement jamais utiliser vos symboles, vous ne devez pas vous inquiéter à ce sujet. Mais si vous écrivez un cadre ou d'une bibliothèque à l'usage des autres, vous devez également préfixer vos symboles avec un préfixe unique. CocoaDev a une page où de nombreux développeurs dans la communauté Cocoa ont énuméré leurs préfixes « choisis ». Vous pouvez également trouver cette discussion SO utile.
Il est du NeXTSTEP patrimoine.
N eXT S TEP ou N eXTSTEP / S un en fonction de qui vous demandez.
Sun avait un investissement assez important dans OpenStep pendant un certain temps. Avant Sun est entré en scène la plupart des choses dans la fondation, même si on ne savait pas que la fondation à l' époque, était préfixé NX , pour N e X T, et parfois juste avant Sun est entré dans le tout a été renommé NS . Le S le plus probable n'a pas résisté à Sun alors , mais après Sun est intervenu le consensus général était qu'il était pour Sun d'honorer leur engagement.
J'ai eu en fait une référence pour cela, mais je ne peux pas le trouver en ce moment. Je vais mettre à jour le poste si / quand je trouve à nouveau.
Il est le patrimoine NextStep (= NS). NeXT était la société informatique que Steve Jobs formé après avoir quitté Apple en 1985, et NeXTstep son système d'exploitation (UNIX) ainsi que la langue Obj-C et l'exécution. Ensemble avec ses bibliothèques et d'outils, NextStep a ensuite été rebaptisé OpenStep (qui était aussi le nom sur une API qui NeXT développé conjointement avec Sun), ce qui est devenu plus tard Cocoa.
Ces noms différents sont en fait assez déroutant (d'autant plus que certains des noms ne diffère que dans lequel les caractères sont en majuscules ou minuscules ..), essayez ceci pour une explication:
De développeur d'Apple docs:
Note historique: Si vous vous demandez pourquoi tant de classes que vous rencontrez ont un préfixe NS, il est à cause de l'histoire passée de Cocoa et Cocoa Touch. Le cacao a commencé sa vie comme les cadres collectés utilisés pour créer des applications pour le système d'exploitation NeXTstep. Quand Apple a acheté NeXT en 1996, une grande partie de NeXTStep a été incorporé dans OS X, y compris les noms de classe existants. Cocoa Touch a été présenté comme l'équivalent iOS de cacao; certaines classes sont disponibles en Cocoa et Cocoa Touch, mais il y a aussi un grand nombre de classes propres à chaque plate-forme. préfixes à deux lettres comme NS et l'interface utilisateur (pour les éléments de l'interface utilisateur sur iOS) sont réservées à une utilisation par Apple.
Source: Programmation avec Objective-C
(Nous soulignons)
Classes Cocoa commencent par l'acronyme « NS » (debout soit pour la création NeXT-Soleil de OpenStep , ou pour le terme propriétaire original pour le cadre OpenStep, NeXTSTEP ): NSString, NSArray, etc.
Kit Foundation , ou plus communément simplement Foundation , sont apparus dans OpenStep . Sous Mac OS X, il est basé sur le Core Foundation. Fondation est une bibliothèque orientée objet générique fournissant la manipulation de chaînes et de valeur, des récipients et d' itération, l' informatique distribuée, les boucles dirigées, et d' autres fonctions qui ne sont pas directement liés à l'interface utilisateur graphique. Le préfixe « NS » , utilisé pour toutes les classes et constantes dans le cadre, vient du patrimoine OPENSTEP de cacao, qui a été développé conjointement par NeXT et dim. .
Lorsque NeXT définissaient l'API NextStep (par opposition au système d'exploitation NEXTSTEP), ils ont utilisé le préfixe NX, comme dans NXConstantString. Quand ils écrivaient la spécification OpenStep avec Sun (à ne pas confondre avec le système d'exploitation OPENSTEP) ils ont utilisé le préfixe NS, comme dans NSObject.
Bill Bumgarner alias @bbum, qui devrait savoir , affiché sur la liste de diffusion de CocoaBuilder en 2005 :
Sun est entré dans l'image un peu après le préfixe NS était entré en jeu. Le préfixe NS est arrivé dans les API publiques pendant le passage de NeXTSTEP 3,0 à 4,0 NeXTSTEP (également connu sous le nom OpenStep). Avant 4.0, une poignée de symboles utilisé le préfixe NX, mais la plupart des classes fournies par les bibliothèques système n'étaient pas préfixé du tout - Liste, Hashtable, vue, etc ...
Il semble que tout le monde est d' accord que le préfixe NX (pour NeXT) a été utilisé jusqu'en 1993/1994, et les documents d'Apple disent :
L'API officielle OpenStep, publiée en Septembre 1994, a été le premier à diviser l'API entre la Fondation et le kit d'application et le premier à utiliser le préfixe « NS ».
En gros NS vient de N ext S PTE, le système d'exploitation d' origine qui est devenu Mac OS X quand Apple a acquis suivant.
Je veux expliquer autre chose et c'est exactement pourquoi il est nécessaire.
En C ++ , il y a des espaces de noms et presque tout va dans std
C'est pourquoi vous avez std :: string.
Les espaces de noms sont utilisés de sorte qu'il est plus difficile pour vous de faire une erreur et vous pouvez écrire votre propre chaîne de classe sans entrer en conflit avec le système un.
Objective-C est de C surensemble, mais il ne comprend pas et espaces de noms pour la même raison au-dessus de toutes les classes du système sont preffixed avec NS ou un autre preffix étrange.
Cette chose est le même de la façon dont toutes les classes DirectX sont preffixed avec D3D et comment toutes les classes OpenGL sont preffixed avec gl .
Cela signifie que vous ne devez pas utiliser NS pour nommer vos propres classes et quand vous voyez NS , CA en Core Animation ou CG dans Graphics base vous comprenez que cela est un appel à un cadre du système.
Des changements rapides de cette convention, parce que Swift et prend en charge l'espace de nommage associe ses types de base comme chaîne aux équivalents NS.
Il est du patrimoine NeXTSTEP
L'étape suivante. Il est un vestige de quand objective-c a été créé par NeXT pour écrire nextstep (plus tard os x) et toutes les applications associées, etc. Ils représentent des éléments qui ne font pas partie du fondement original C, par exemple, il n'y a pas « string » élément en C, donc en c objectif, il est un élément de base supplémentaire « NSString ».













