De nombreuses classes dans Cocoa / Cocoa Touch ont le préfixe NS. Qu'est-ce que ça veut dire?
ios
objective-c
cocoa
cocoa-touch
Martin08
la source
la source
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.
la source
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.
la source
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:
TheMerger OpenstepConfusion
la source
À partir des documents de développement d'Apple:
Source: Programmation avec Objective-C
la source
De Cocoa_ (API) Wikipedia :
(pas d'italique dans l'original)
la source
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.
la source
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.
la source
Bill Bumgarner aka @bbum, qui devrait savoir , a posté sur la liste de diffusion de CocoaBuilder en 2005 :
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 :
la source