De nombreuses classes de Cocoa/Cocoa Touch ont le préfixe NS. Qu'est-ce que ça veut dire?
Cela vient du NeXTSTEP héritage.
Le code original des frameworks Cocoa provenait des bibliothèques NeXTSTEP Foundation et AppKit (ces noms sont toujours utilisés par les frameworks Apple de Cocoa), et les ingénieurs de NeXTSTEP ont choisi de préfixer leurs symboles de NS.
Comme Objective-C est une extension de C et ne possède donc pas d'espaces de noms comme en C++, les symboles doivent être précédés d'un préfixe unique afin de ne pas entrer en collision. Ceci est particulièrement important pour les symboles définis dans un cadre.
Si vous écrivez une application, de sorte que votre code n'utilisera probablement que vos symboles, vous n'avez pas à vous en préoccuper. Mais si vous écrivez un framework ou une bibliothèque à l'usage d'autres personnes, 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 SO discussion utile.
NeXTSTEP ou NeXTSTEP /Sen fonction de qui vous demandez.
Sun a longtemps investi dans OpenStep. Avant que Sun n'entre dans l'image, la plupart des éléments de la fondation, bien qu'ils ne s'appelaient pas encore à l'époque, étaient précédés du préfixe NX, car NeXT, et parfois juste avant que Sun entre dans l’image, tout a été renommé en NS. Les S ne représentaient probablement pas Sun à ce moment-là, mais après que Sun soit intervenu, le consensus général était que cela signifiait que Sun honorait leur participation.
J'avais effectivement une référence pour cela, mais je ne la trouve pas pour le moment. Je mettrai à jour le post si/quand je le retrouve.
C'est l'héritage de NeXTSTEP (= NS). NeXT était la société d’informatique créée par Steve Jobs après avoir quitté Apple en 1985, et NeXTSTEP était son système d’exploitation (basé sur UNIX) ainsi que le langage et le runtime Obj-C. Avec ses bibliothèques et ses outils, NeXTSTEP a par la suite été renommé OpenStep (qui s'appelait également dans une API développée par NeXT et Sun), qui est à son tour devenu Cocoa.
Ces différents noms sont en fait assez déroutants (d’autant plus que certains noms ne diffèrent que par les caractères majuscules ou minuscules ..), essayez ceci pour une explication:
D'après la documentation destinée aux développeurs d'Apple:
Note historique: Si vous vous demandez pourquoi un si grand nombre de classes que vous rencontrez ont un préfixe NS, c'est en raison de l'historique de Cocoa et de Cocoa Touch. Cocoa a commencé sa vie en tant que structures collectées utilisées 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 classe existants. Cocoa Touch a été présenté comme l’équivalent iOS de Cocoa; certaines classes sont disponibles à la fois dans Cocoa et Cocoa Touch, bien qu’il existe également un grand nombre de classes uniques sur chaque plate-forme. Les préfixes à deux lettres tels que NS et UI (pour les éléments d'interface utilisateur sur iOS) sont réservés à Apple.
Source: Programmation avec Objective-C
(emphase ajoutée)
Les classes de cacao commencent par l’acronyme "NS" (soit pour la création de NeXT-Sun d’OpenStep , ou pour le terme propriétaire d'origine du framework OpenStep, NeXTSTEP ): NSString, NSArray, etc.
Foundation Kit, ou plus simplement simplement Foundation, est apparu pour la première fois dans OpenStep. Sur Mac OS X, il est basé sur Core Foundation. Foundation est une bibliothèque générique orientée objet qui permet la manipulation de chaînes et de valeurs, des conteneurs et des itérations, le calcul distribué, les boucles d’exécution et d’autres fonctions qui ne sont pas directement liées à l’interface graphique. Le préfixe "NS" , utilisé pour toutes les classes et constantes du cadre, provient de l'héritage OPENSTEP de de Cocoa, qui a été développé conjointement par NeXT et Sun.
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.
Fondamentalement, NS provient de N ext S TEP, le système d'exploitation d'origine qui est devenu Mac OS X lorsque Apple acquis Suivant.
Je veux expliquer quelque chose d'autre et c'est pourquoi c'est exactement nécessaire.
En C++, il y a des espaces de noms et presque tout y passe 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 un sur-ensemble de C, mais il n'inclut pas les espaces de noms et, pour la même raison, toutes les classes système sont préfixées avec NS ou un autre preffix étrange.
Ceci est identique à la manière dont toutes les classes DirectX sont preffixées avec D3D et à la manière dont toutes les classes OpenGL sont préfixées à gl.
Cela signifie que vous ne devez pas utiliser NS pour nommer vos propres classes et lorsque vous voyez NS, CA dans Core Animation. ou CG dans Core Graphics, vous comprenez qu'il s'agit d'un appel à une structure système.
Swift modifie cette convention, car Swift prend en charge l'espacement de noms et mappe ses types principaux, tels que String, aux équivalents NS.
Bill Bumgarner alias @ album, qui devrait le savoir , posté sur la liste de diffusion CocoaBuilder en 2005 :
Sun est entré dans l'image un peu après l'entrée en jeu du préfixe NS. Le préfixe NS est apparu dans les API publiques lors du passage de NeXTSTEP 3.0 à NeXTSTEP 4.0 (également appelé OpenStep). Avant la version 4.0, une poignée de symboles utilisait le préfixe NX, mais la plupart des classes fournies par les bibliothèques système n'étaient pas du tout préfixées - List, Hashtable, View, etc.
Il semble que tout le monde s'accorde pour dire que le préfixe NX (pour NeXT) a été utilisé jusqu'en 1993/1994, et la documentation d'Apple le dit :
L’API officielle OpenStep, 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".
Ça vient de l'héritage NeXTSTEP
L'étape suivante. C'est une sauvegarde de la création de l'objectif-c 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 de la base C d'origine, par exemple, il n'y a pas de "chaîne". élément en C, donc dans objectif-c, c’est un élément de base supplémentaire, "NSString".