Question Que signifie le préfixe NS?


De nombreuses classes de Cocoa / Cocoa Touch ont le préfixe NS. Qu'est-ce que ça veut dire?


514
2018-01-23 17:22


origine


Réponses:


C'est du L'étape suivante patrimoine.


398
2018-01-23 17:24



Le code original des frameworks Cocoa provient du L'étape suivante bibliothèques Foundation et AppKit (ces noms sont toujours utilisés par les frameworks Cocoa d'Apple), et les ingénieurs de NextStep ont choisi de préfixer leurs symboles avec NS.

Parce que Objective-C est une extension de C et n'a donc pas d'espaces de noms comme en C ++, les symboles doivent être préfixés avec un préfixe unique afin qu'ils ne se chevauchent pas. Ceci est particulièrement important pour les symboles définis dans un cadre.

Si vous écrivez une application, de sorte que votre code n'utilise probablement que vos symboles, vous n'avez pas à vous en préoccuper. Mais si vous écrivez un cadre ou une bibliothèque pour 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 de la communauté Cocoa ont listé leurs préfixes "choisis". Vous pouvez également trouver cette discussion SO utile.


744
2018-01-23 17:52



NeXTSTEP ou NeXTSTEP /Sun en fonction de qui vous demandez.

Sun a investi assez longtemps dans OpenStep pendant un certain temps. Avant que Sun n'entre dans le tableau, la plupart des choses de la fondation, même si elles n'étaient pas connues à l'époque, étaient préfixées NX, pour NeXT, et parfois juste avant que Sun est entré dans l'image tout a été renommé NS. le S Il est fort probable que Sun ne se soit pas opposé à Sun, mais, après que Sun eut pris le parti général, il était convenu que Sun honorerait leur engagement.

J'ai effectivement eu une référence pour cela mais je ne peux pas le trouver maintenant. Je mettrai à jour le post si / quand je le retrouve.


145
2018-01-23 18:03



C'est l'héritage NextStep (= NS). NeXT était la société informatique que Steve Jobs a formée après avoir quitté Apple en 1985, et NextStep était son système d'exploitation (basé sur UNIX) avec le langage Obj-C et l'exécution. NextStep a ensuite été rebaptisé OpenStep (qui était aussi le nom d'une API que NeXT a développé avec Sun), qui à son tour est devenu Cocoa.

Ces différents noms sont en fait assez confus (d'autant plus que certains des noms ne diffèrent que dans quels caractères sont majuscules ou minuscules ..), essayez ceci pour une explication:

TheMerger OpenstepConfusion


51
2018-01-23 18:01



De docs de développeur d'Apple:

Note historique: Si vous vous demandez pourquoi tant de classes que vous rencontrez ont un préfixe NS, c'est à cause de l'histoire passée de Cocoa et Cocoa Touch. Cocoa a vu le jour en tant que frameworks collectés utilisés pour créer des applications pour le système d'exploitation NeXTStep. Lorsque Apple a acheté NeXT en 1996, une grande partie de NeXTStep a été intégrée à OS X, y compris les noms de classes existants. Cocoa Touch a été présenté comme l'équivalent iOS de Cocoa; certaines classes sont disponibles dans Cocoa et Cocoa Touch, bien qu'il existe également un grand nombre de classes uniques à chaque plate-forme.   Les préfixes à deux lettres comme NS et UI (pour les éléments d'interface utilisateur sur iOS) sont réservés à Apple.

La source: Programmation avec Objective-C


39
2018-03-19 04:53



De Cocoa_ (API) Wikipedia:

(c'est nous qui soulignons)

Les cours de cacao commencent par l'acronyme "NS" (debout soit pour le    Création NeXT-Sun d'OpenStepou pour le terme propriétaire d'origine   pour le framework OpenStep, L'étape suivante): NSString, NSArray, etc.

Trousse de fondation, ou plus communément simplement Fondation, est apparu dans    OpenStep. Sur Mac OS X, il est basé sur Core Foundation. Fondation est un   bibliothèque générique orientée objet fournissant la chaîne et la valeur   manipulation, conteneurs et itération, calcul distribué, exécution   boucles, et d'autres fonctions qui ne sont pas directement liées au graphique   interface utilisateur. Le préfixe "NS", utilisé pour toutes les classes et constantes dans   le cadre, vient de Le patrimoine OPENSTEP de Cocoa, qui était conjointement   développé par Prochain et Soleil.


21
2017-10-27 18:08



Lorsque NeXT définissait l'API NextStep (par opposition au système d'exploitation NEXTSTEP), ils utilisaient le préfixe NX, comme dans NXConstantString. Lorsqu'ils écrivaient la spécification OpenStep avec Sun (à ne pas confondre avec le système d'exploitation OPENSTEP), ils utilisaient le préfixe NS, comme dans NSObject.


10
2018-01-24 02:32



Bill Bumgarner aka @bbum, qui devrait savoir, posté sur le Liste de diffusion de CocoaBuilder en 2005:

Sun a entré la photo un peu après que le préfixe NS soit entré en jeu. Le préfixe NS est apparu dans les API publiques lors du passage de NeXTSTEP 3.0 à NeXTSTEP 4.0 (également appelé OpenStep). Avant 4.0, un   quelques symboles utilisaient le préfixe NX, mais la plupart des classes fournies par   les bibliothèques système n'étaient pas préfixées du tout - List, Hashtable,   Voir, etc ...

Il semble que tout le monde s'accorde à dire que le préfixe NX (pour NeXT) a été utilisé jusqu'en 1993/1994, et Les docs d'Apple disent:

L'API OpenStep officielle, publiée en septembre 1994, a été la première à scinder l'API entre Foundation et Application Kit et la première à utiliser le préfixe "NS".


6
2017-09-05 04:04



Fondamentalement NS vient de NextSTEP, le système d'exploitation d'origine qui est devenu Mac OS X lorsque Apple a acquis Next.

Je veux expliquer quelque chose d'autre et c'est pourquoi exactement c'est nécessaire.

En C ++ il y a des espaces de noms et presque tout entre std

C'est pourquoi vous avez std :: string.

Les espaces de noms sont utilisés, il est donc plus difficile pour vous de faire une erreur et vous pouvez écrire votre propre chaîne de classe sans entrer en conflit avec celle du système.

Objective-C est le surensemble de C, mais il n'inclut pas les espaces de noms et pour la même raison, toutes les classes système sont précédées d'un préfixe NS ou d'un autre préfixe étrange.

Cette chose est la même de la façon dont toutes les classes DirectX sont préffixe avec D3D et comment toutes les classes OpenGL sont pré-affectées avec gl.

Cela signifie que vous ne devez pas utiliser NS pour nommer vos propres classes et quand vous voyez NS, Californie dans Core Animation ou CG Dans Core Graphics, vous comprenez qu'il s'agit d'un appel à un framework système.

Swift modifie cette convention, car Swift prend en charge l'espace de noms et il mappe ses types de base comme String aux équivalents NS.


6
2018-01-08 12:27