Réponses:
C'est de l' héritage NeXTSTEP .
Le code d'origine des frameworks Cocoa provenait des bibliothèques NeXTSTEP 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 heurtent pas. Ceci est particulièrement important pour les symboles définis dans un cadre.
Si vous écrivez une application, de telle 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 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 répertorié leurs préfixes "choisis". Vous pouvez également trouver cette discussion SO utile.
N eXT S TEP ou N eXTSTEP / S un selon la personne à qui vous demandez.
Sun a investi assez longtemps dans OpenStep pendant un certain temps. Avant que Sun n'entre dans l'image, la plupart des choses dans la fondation, même si elle n'était pas connue à l'époque, était préfixée NX , pour N e X T, et quelque temps juste avant que Sun n'entre dans l'image, tout était renommé NS . Le S ne représentait probablement pas Sun à ce moment-là, mais après que Sun est intervenu dans le consensus général, il a voulu que Sun honore leur implication.
J'avais en fait une référence pour cela, mais je ne la trouve pas pour le moment. Je mettrai à jour le message si / quand je le retrouve.
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 le runtime. Avec ses bibliothèques et ses outils, NextStep a ensuite été renommé OpenStep (qui était également le nom d'une API que NeXT a développée avec Sun), qui est devenu plus tard Cocoa.
Ces différents noms sont en fait assez déroutants (d'autant plus que certains des noms ne diffèrent que par les caractères en majuscule ou en minuscule ..), essayez ceci pour une explication:
À partir des documents de développement 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 commencé sa vie comme les cadres 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 classe 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.
Source: Programmation avec Objective-C
(pas d'italique dans l'original)
Les classes de cacao commencent par l'acronyme "NS" (représentant soit la création NeXT-Sun d'OpenStep , soit le terme propriétaire original pour le framework OpenStep, NeXTSTEP ): NSString, NSArray, etc.
Foundation Kit , ou plus communément 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 fournissant des manipulations de chaînes et de valeurs, des conteneurs et des itérations, de l'informatique distribuée, des boucles d'exécution et d'autres fonctions qui ne sont pas directement liées à 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éfinissait l'API NextStep (par opposition au système d'exploitation NEXTSTEP), ils utilisaient 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 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 a acquis Next.
Je veux expliquer autre chose et c'est pourquoi c'est exactement nécessaire.
En C ++, il y a des espaces de noms et presque tout se passe en 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 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éfixées par NS ou un autre étrange préfixe.
Cette chose est la même de la façon dont toutes les classes DirectX sont préfixées avec D3D et comment toutes les classes OpenGL sont préfixées avec 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 infrastructure système.
Swift modifie cette convention, car Swift prend en charge l'espace de noms et mappe ses types principaux comme String aux équivalents NS.
Bill Bumgarner aka @bbum, qui devrait savoir , a posté sur la liste de diffusion de 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 utilisaient 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 à dire que le préfixe NX (pour NeXT) a été utilisé jusqu'en 1993/1994, et les documents d'Apple disent :
L'API OpenStep officielle, publiée en septembre 1994, a été la première à diviser l'API entre Foundation et Application Kit et la première à utiliser le préfixe «NS».