¿Qué significa el prefijo NS?


Muchas clases en Cocoa/Cocoa Touch tienen el prefijo NS. ¿Qué significa?

Author: ThisClark, 2009-01-23

10 answers

Es de la herencia NeXTSTEP.

 403
Author: Olaf Kock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-19 06:11:14

El código original para los frameworks Cocoa provino de NeXTSTEP libraries Foundation y AppKit (esos nombres todavía son utilizados por Cocoa frameworks de Apple), y los ingenieros de NeXTSTEP eligieron prefijar sus símbolos con NS.

Debido a que Objective-C es una extensión de C y por lo tanto no tiene espacios de nombres como en C++, los símbolos deben tener un prefijo único para que no choquen. Esto es particularmente importante para los símbolos definidos en un marco.

Si está escribiendo una aplicación, de modo que su código solo es probable que utilice sus símbolos, usted no tiene que preocuparse por esto. Pero si estás escribiendo un framework o una biblioteca para uso de otros, también deberías poner un prefijo único a tus símbolos. CocoaDev tiene una página donde muchos desarrolladores en la comunidad Cocoa han listado sus prefijos "elegidos". También puede encontrar esta discusión útil.

 747
Author: Barry Wark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 17:33:44

NeXTSTEP o NeXTSTEP/Sde la onu, dependiendo de a quién le está pidiendo.

Sun tuvo una inversión bastante grande en OpenStep durante un tiempo. Antes de que Sun entrara en la imagen, la mayoría de las cosas en la fundación, a pesar de que no era conocida como la fundación en ese entonces, tenía el prefijo NX, para NeXT, y en algún momento justo antes de que Sun entrara en la imagen, todo fue renombrado a NS. Lo más probable es que los S no representaran al Sol luego, pero después de que Sun interviniera, el consenso general fue que Sun debía honrar su participación.

En realidad tenía una referencia para esto, pero no puedo encontrarla en este momento. Actualizaré el post si/cuando lo encuentre de nuevo.

 145
Author: David Holm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-08 12:36:44

Es la herencia NeXTSTEP (= NS). Luego fue la compañía de computadoras que Steve Jobs formó después de dejar Apple en 1985, y NeXTSTEP fue su sistema operativo (basado en UNIX) junto con el lenguaje Obj-C y el tiempo de ejecución. Junto con sus bibliotecas y herramientas, NeXTSTEP más tarde fue renombrado OpenStep (que también era el nombre en una API que se desarrolló junto con Sun), que a su vez más tarde se convirtió en Cocoa.

Estos nombres diferentes son en realidad bastante confusos (especialmente porque algunos de los nombres solo difieren en los caracteres en mayúsculas o minúsculas..), prueba esto para una explicación:

TheMerger OpenstepConfusion

 51
Author: Gregor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-20 06:11:03

De los documentos del desarrollador de Apple:

Nota histórica: Si te estás preguntando por qué tantas de las clases que encuentras tienen un prefijo NS, es debido a la historia pasada de Cocoa y Cocoa Touch. Cocoa comenzó su vida como los frameworks recopilados utilizados para crear aplicaciones para el sistema operativo NeXTSTEP. Cuando Apple compró NeXT en 1996, gran parte de NeXTSTEP se incorporó a OS X, incluidos los nombres de clase existentes. Cocoa Touch se introdujo como el equivalente de iOS del cacao; algunos las clases están disponibles en Cocoa y Cocoa Touch, aunque también hay un gran número de clases únicas para cada plataforma. Los prefijos de dos letras como NS y UI (para los elementos de la interfaz de usuario en iOS) están reservados para su uso por Apple.

Fuente: Programación con Objective-C

 39
Author: Jonathan Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-19 04:53:08

De Cocoa_(API) Wikipedia :

(sin cursiva en el original)

Las clases de cacao comienzan con el acrónimo " NS " (de NeXT-Sun creación de OpenStep, o para el término propietario original para el framework OpenStep, NeXTSTEP): NSString, NSArray, etc.

Foundation Kit, o más comúnmente simplemente Foundation , apareció por primera vez en OpenStep . En Mac OS X, se basa en Core Fundación. La fundación es un biblioteca genérica orientada a objetos que proporciona cadena y valor manipulación, contenedores e iteración, computación distribuida, ejecución bucles, y otras funciones que no están directamente vinculadas a la gráfica interfaz de usuario. El prefijo" NS " , usado para todas las clases y constantes en el marco, proviene de patrimonio OPENSTEP de Cocoa, que fue conjuntamente desarrollado por NeXTy Sun.

 21
Author: chown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-16 19:47:56

Cuando NeXT estaba definiendo la API NeXTSTEP (a diferencia del sistema operativo NEXTSTEP), usaron el prefijo NX, como en NXConstantString. Cuando escribían la especificación OpenStep con Sun (que no debe confundirse con el sistema operativo OPENSTEP) usaban el prefijo NS, como en NSObject.

 10
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-24 02:32:46

Bill Bumgarner alias @ bbum, que debería saber , publicado en la lista de correo de CocoaBuilder en 2005:

Sun entró en la imagen un poco después de que el prefijo NS entrara en juego. El prefijo NS surgió en las API públicas durante el paso de NeXTSTEP 3.0 a NeXTSTEP 4.0 (también conocido como OpenStep). Antes de 4.0, a un puñado de símbolos utilizan el prefijo NX, pero la mayoría de las clases proporcionadas por las bibliotecas del sistema no tenían prefijo en absoluto List List, Hashtable, Vista, sucesivamente...

Parece que todo el mundo está de acuerdo en que el prefijo NX (para NeXT) se usó hasta 1993/1994, y los documentos de Apple dicen :

La API oficial de OpenStep, publicada en septiembre de 1994, fue la primera en dividir la API entre Foundation y Application Kit y la primera en usar el prefijo "NS".

 6
Author: Simon Woodside,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:45

Básicamente NSviene de NextS TEP, el sistema operativo original que se convirtió en Mac OS X cuando Apple adquirió Next.

Quiero explicar algo más y por eso es exactamente necesario.

En C++ hay espacios de nombres y casi todo vale en std

Esta es la razón por la que tienes std::string.

Los espacios de nombres se utilizan por lo que es más difícil para usted cometer un error y puede escribir su propia cadena de clase sin entrar en conflicto con el sistema uno.

Objective-C es un superconjunto de C, pero no incluye espacios de nombres y por la misma razón, sobre todo, las clases de sistema están prefijadas con NS u otro prefijo extraño.

Esto es lo mismo de cómo todas las clases de DirectX están prefijadas con D3D y cómo todas las clases de OpenGL están prefijadas con gl.

Esto significa que no debe usar NS para nombrar sus propias clases y cuando vea NS, CA en la Animación Principal o CG en Core Graphics se entiende que se trata de una llamada a un framework del sistema.

Swift cambia esta convención, porque Swift admite el espacio de nombres y asigna sus tipos principales como String a los equivalentes NS.

 6
Author: Daniel Georgiev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-08 12:27:45

NeXTSTEP. Es un remanente de cuando objective-c fue creado por NeXT to escribe nextstep (más tarde os x) y todas las aplicaciones asociadas, etc. Le representar elementos que no forman parte de la base C original, por ejemplo, no hay ningún elemento 'string' en C, por lo que en objective-c, es un elemento de base adicional 'NSString'.

 1
Author: Ramprasath Selvam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-27 09:29:13