Que signifie le préfixe NS?

de nombreuses classes de Cocoa/Cocoa Touch ont le préfixe NS. Ça veut dire quoi?

521
demandé sur ThisClark 2009-01-23 20:22:44

10 réponses

C'est du NeXTSTEP heritage.

403
répondu Olaf Kock 2013-10-19 06:11:14

le code original pour les cadres Cocoa provient de la NeXTSTEP libraries Foundation et AppKit (ces noms sont encore utilisés par les cadres Cocoa D'Apple), et les ingénieurs 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 pour ne pas entrer en collision. Ceci est particulièrement important pour les symboles définies dans un cadre.

si vous écrivez une application, de telle sorte que votre code est seulement susceptible d'utiliser vos symboles, vous n'avez pas à vous soucier de cela. Mais si vous écrivez un framework ou une bibliothèque pour l'usage des autres, vous devriez aussi préfixer vos symboles avec un préfixe unique. CocoaDev a une page où de nombreux développeurs de la communauté du cacao ont listé leurs préfixes "choisis". Vous pouvez également trouver cette discussion SO utile.

747
répondu Barry Wark 2018-03-06 17:33:44

N eXT S TEP ou N eXTSTEP/ S de l'onu, en fonction de qui vous demandez.

Sun avait un investissement assez important dans OpenStep pendant un certain temps. Avant Sun est entré dans l'image la plupart des choses dans la fondation, même si elle n'était pas connue comme la fondation à l'époque, a été préfixé NX , pour N e X T, et juste avant L'entrée de Sun dans l'image tout a été renommé en NS . Le s n'était probablement pas Sun then mais après Sun Step dans le consensus général était qu'il signifiait Sun pour honorer leur participation.

j'avais en fait une référence pour ça mais je ne peux pas la trouver maintenant. Je mettrai à jour le post si/quand-je le retrouver.

145
répondu David Holm 2013-01-08 12:36:44

C'est le patrimoine de NextStep (= NS). Ensuite, la société informatique que Steve Jobs a créé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 runtime. Avec ses bibliothèques et ses outils, NextStep a ensuite été renommé OpenStep (qui était aussi le nom d'une API qui S'est ensuite développée avec Sun), qui à son tour est devenu Cocoa.

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

TheMerger OpenstepConfusion

51
répondu Gregor 2013-06-20 06:11:03

de Apple developer's docs:

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 du cacao et du cacao Touch. Cocoa a commencé sa vie comme les cadres collectés utilisés pour construire des applications pour le système D'exploitation NeXTStep. Quand Apple a acheté NeXT en 1996, une grande partie de NeXTStep a été incorporée dans OS X, Y compris les noms de classe existants. Cocoa Touch a été mis en place comme l' iOS équivalent de cacao; certaines classes sont disponibles en cacao et Cacao 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 objectif-C

39
répondu Jonathan Lin 2013-03-19 04:53:08

à Partir de Cocoa_(API) de Wikipédia :

(non souligné dans l'original)

Cacao, les cours commencent avec l'acronyme "NS" (que ce soit pour la NeXT-Sun création D'OpenStep , ou pour le terme original propriétaire for the OpenStep framework, NeXTSTEP ): NSString, NSArray,etc.

Kit De Fondation , ou plus communément simplement Fondation , d'abord paru en OpenStep . Sur Mac OS X, il est basé sur Core Foundation. La fondation est un bibliothèque Générique orientée objet fournissant chaîne et valeur manipulation, conteneurs et itération, calcul distribué, exécuter les 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 Cacoa's OPENSTEP heritage, qui a été conjointement développé par Suivant et Soleil .

21
répondu chown 2012-07-16 19:47:56

lorsque NeXT définissait L'API NextStep (par opposition au système D'exploitation NEXTSTEP), ils utilisaient le préfixe NX, comme dans Nxconstartstring. 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
répondu 2009-01-24 02:32:46

Bill Bumgarner aka @bbum, who should know , a publié sur la CocoaBuilder mailing list en 2005 :

Sun est entré un peu dans l'image 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 connu sous le nom D'OpenStep). Avant 4.0, un une poignée de symboles a utilisé le préfixe NX, mais la plupart des classes fournies par les bibliothèques système n'ont pas été préfixés du tout -- List, Hashtable, Vue, etc...

il semble que tout le monde s'accorde à dire que le préfixe NX (for NeXT) a été utilisé jusqu'en 1993/1994, et Les Docs D'Apple disent :

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

6
répondu Simon Woodside 2017-05-23 12:10:45

fondamentalement NS vient de N ext S TEP, le système d'exploitation original qui est devenu Mac OS X quand Apple a acquis Next.

je veux expliquer autre chose et c'est pour cela que c'est nécessaire.

En C++ il y a des espaces de noms et presque tout est dans le std

C'est pourquoi vous avez std::string.

Namespaces sont utilisés de sorte qu'il est plus difficile pour vous de faire une erreur et vous pouvez écrire votre propre corde de classe sans entrer en conflit avec le système un.

objectif-C est un super-ensemble de C, mais il n'inclut pas les espaces de noms et pour la même raison surtout les classes de système sont préfixées avec NS ou un autre préfix étrange.

Cette chose est le même que tous les DirectX classes sont preffixed avec D3D , et comment tout OpenGL les classes sont préfixées avec gl .

cela signifie que vous ne devez pas utiliser NS pour nommer vos propres classes et quand vous voyez NS , CA dans L'Animation de base ou CG dans les graphiques de base vous comprenez que c'est un appel à un cadre de système.

Swift change cette convention, parce que Swift prend en charge l'espacenom et établit des correspondances avec ses principaux types comme Chaîne de caractères à la NS équivalents.

6
répondu Daniel Georgiev 2017-01-08 12:27:45

NextStep. Il s'agit d'un hold-over de l'époque où l'objectif-c a été créé par NeXT to écrivez nextstep (plus tard os x) et toutes les applications associées, etc. Ils représentent des éléments qui ne font pas partie du sous-jacent C original, par exemple, il n'y a pas d'élément "string" dans C, donc dans objective-c, c'est un élément de base supplémentaire "NSString".

1
répondu Ramprasath Selvam 2017-06-27 09:29:13