当前位置:  开发笔记 > 编程语言 > 正文

NS前缀是什么意思?

如何解决《NS前缀是什么意思?》经验,为你挑选了9个好方法。

Cocoa/Cocoa Touch中的许多类都有NS前缀.这是什么意思?



1> Barry Wark..:

Cocoa框架的原始代码来自NeXTSTEP库Foundation和AppKit(这些名称仍由Apple的Cocoa框架使用),NextStep工程师选择在其符号前加上NS.

因为Objective-C是C的扩展,因此没有C++中的命名空间,所以符号必须以唯一的前缀为前缀,以便它们不会发生冲突.这对于框架中定义的符号尤为重要.

如果您正在编写应用程序,以便您的代码只能使用您的符号,则不必担心这一点.但是,如果您正在编写框架或库以供其他人使用,您还应该在符号前面加上唯一的前缀.CocoaDev有一个页面,Cocoa社区中的许多开发人员都列出了他们的"选择"前缀.您可能还会发现此SO讨论很有帮助.



2> Olaf Kock..:

这是来自NeXTSTEP的遗产.


当然是.这些都是在其他答案中精心布置的,这就是为什么我没有把这些信息复制到我的内容中.对不起,如果冒犯了某人 - 我不介意接受的答案是否改为其中一个(如果可能的话 - 从未检查过).
...或者也许是NeXT/Sun遗产(Sun是OpenStep联盟的参与者)
我想看到更多,但链接到NeXTSTEP

3> David Holm..:

N eXT S TEP或N eXTSTEP/S取决于您的要求.

Sun暂时对OpenStep进行了大量投资.前太阳进入画面大多数事情的基础上,即使它不知道为基础回去以后,被前缀NX,为ñ ē X T,并且有时太阳进入之前的图片都被重命名为NS.在小号很可能没有代表太阳,然后,但太阳在普遍共识加强后,它主张太阳履行它们的参与.

我实际上有一个参考,但我现在找不到它.如果/我再次找到它,我会更新帖子.


我从一个非常可靠的来源听到了同样的故事; 我很确定这是最准确的答案.
我找到了一个参考:http://www.cocoabuilder.com/archive/cocoa/136618-what-does-ns-means.html

4> Gregor..:

它是NextStep(= NS)的遗产.NeXT是史蒂夫乔布斯在1985年退出苹果公司后成立的计算机公司,而NextStep是它的操作系统(基于UNIX)以及Obj-C语言和运行时.与它的库和工具一起,NextStep后来被重命名为OpenStep(它也是NeXT与Sun共同开发的API的名称),后来又成为Cocoa.

这些不同的名称实际上非常令人困惑(特别是因为一些名称只有大小写字母大小不同...),请尝试以下解释:

TheMerger OpenstepConfusion


我可以发誓苹果因各种原因解雇了他.

5> Jonathan Lin..:

来自Apple的开发人员文档:

历史记录:如果你想知道为什么你遇到的这么多类有一个NS前缀,那是因为Cocoa和Cocoa Touch的过去历史.Cocoa以收集的框架开始,用于为NeXTStep操作系统构建应用程序.当Apple在1996年购买NeXT时,很多NeXTStep都被整合到OS X中,包括现有的类名.Cocoa Touch作为iOS的等同于Cocoa而被引入; Cocoa和Cocoa Touch都提供了一些类,但每个平台也有大量独特的类.两个字母的前缀如NS和UI(适用于iOS上的用户界面元素)保留供Apple使用.

来源:使用Objective-C编程



6> chown..:

来自Cocoa_(API)维基百科:

(重点补充)

Cocoa类以首字母缩写"NS"开头(代表 NeXT-Sun创建OpenStep,或者代表OpenStep框架的原始专有术语,NeXTSTEP):NSString,NSArray等.

Foundation Kit,或更常见的Foundation,首先出现在 OpenStep中.在Mac OS X上,它基于Core Foundation.Foundation是一个通用的面向对象的库,提供字符串和值操作,容器和迭代,分布式计算,运行循环以及其他与图形用户界面无直接关系的函数.用于框架中所有类和常量的"NS"前缀来自Cocoa的OPENSTEP遗产,它由NeXTSun联合开发.



7> 小智..:

当NeXT定义NextStep API(而不是NEXTSTEP操作系统)时,他们使用前缀NX,如在NXConstantString中.当他们用Sun编写OpenStep规范时(不要与OPENSTEP操作系统混淆),他们使用NS前缀,就像在NSObject中一样.



8> 小智..:

基本上NS来自N ext S TEP,这是Apple收购Next时成为Mac OS X的原始操作系统.

我想解释别的东西,这就是为什么需要它.

在C++中有名称空间,几乎任何东西都在std中

这就是你有std :: string的原因.

使用命名空间,因此您更难以犯错,并且您可以编写自己的类字符串而不会与系统冲突.

Objective-C是C的超集,但它不包括名称空间,并且出于同样的原因,上面所有系统类都以NS或其他一些奇怪的预加法为前缀.

这与所有DirectX类都以D3D为前缀以及所有OpenGL类都以gl为前缀的方式相同.

这意味着你不应该使用NS命名你自己的类,当你看到核心动画中的NS,CA或核心图形中的CG时,你就会明白这是对系统框架的调用.

Swift改变了这个约定,因为Swift支持命名空间,它将其核心类型(如String)映射到NS等价物.



9> Simon Woodsi..:

应该知道的 Bill Bumgarner 又名@bbum,于2005年在CocoaBuilder邮件列表上发布:

在NS前缀发挥作用后,Sun进入了一些画面.在从NeXTSTEP 3.0迁移到NeXTSTEP 4.0(也称为OpenStep)期间,NS前缀出现在公共API中.在4.0之前,少数符号使用NX前缀,但系统库提供的大多数类都没有前缀 - List,Hashtable,View等...

似乎每个人都同意NX(NeXT)的前缀在1993/1994年之前使用,Apple的文档说:

官方OpenStep API于1994年9月发布,是第一个在Foundation和Application Kit之间拆分API的公司,也是第一个使用"NS"前缀的API.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有