Ios NS前缀是什么意思?

Ios NS前缀是什么意思?,ios,objective-c,cocoa,cocoa-touch,terminology,Ios,Objective C,Cocoa,Cocoa Touch,Terminology,Cocoa/Cocoa Touch中的许多类都有NS前缀。这是什么意思? < P>这是来自遗产。 < P>可可框架的原始代码来自于图书馆基金会和AppKT(这些名称仍然被苹果的COCOA框架使用),而NeXSTEP工程师选择用NS预置它们的符号。 因为Objto-C是C的扩展,因此没有C++中的命名空间,所以符号必须用唯一前缀来前缀,这样它们就不会发生冲突。这对于在框架中定义的符号尤其重要 如果您正在编写一个应用程序,那么您的代码可能只会使用您的符号,您不必担心这一点。但是,如果您正在编写供其他

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

< P>这是来自遗产。

< P>可可框架的原始代码来自于图书馆基金会和AppKT(这些名称仍然被苹果的COCOA框架使用),而NeXSTEP工程师选择用NS预置它们的符号。

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

如果您正在编写一个应用程序,那么您的代码可能只会使用您的符号,您不必担心这一点。但是,如果您正在编写供其他人使用的框架或库,您还应该使用唯一的前缀作为符号的前缀。Cocoa社区的许多开发人员都列出了他们“选择”的前缀。你也可能会发现这很有帮助。

这是下一个步骤(=NS)遗产。接下来是史蒂夫·乔布斯1985年离开苹果后成立的计算机公司,下一步是它的操作系统(基于UNIX)以及Obj-C语言和运行时。NextStep与它的库和工具一起,后来被重命名为OpenStep(OpenStep也是后来与Sun一起开发的API上的名称),后来又被命名为Cocoa

这些不同的名称实际上相当令人困惑(特别是因为有些名称仅在大写或小写字符方面有所不同……),请尝试以下解释:

下一步或下一步/太阳取决于你问的人

Sun曾在OpenStep上进行过相当大的投资。在太阳进入图片之前,基金会中的大多数东西,即使它不被称为基础,那么,前缀NX,为下一个,并且在太阳进入图片之前的某个时候,一切都被重命名为NS。最有可能的是,当时的S不代表Sun,但在Sun介入后,普遍的共识是,它代表Sun对他们的参与表示敬意


实际上我有一个参考资料,但我现在找不到。如果/当我再次找到帖子时,我将更新帖子。

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

来自:

(增加重点)

可可类课程以首字母缩略词“NS”开头(代表 下一个Sun创建的OpenStep,或原始专有术语 对于OpenStep框架,NeXTSTEP):NSString、NSArray等

基础套件,或更常见的简单基础,首先出现在 OpenStep。在Mac OS X上,它是以核心基础为基础的。基金会是 提供字符串和值的通用面向对象库 操作、容器和迭代、分布式计算、运行 循环,以及其他未直接绑定到图形 用户界面前缀“NS”,用于中的所有类和常量 该框架来自Cocoa的OPENSTEP遗产,该遗产由 由NeXT和Sun开发


来自苹果的开发者文档:

历史注释:如果您想知道为什么您遇到的许多类都有NS前缀,那是因为Cocoa和Cocoa Touch的过去历史。Cocoa最初是作为收集的框架来为NeXTStep操作系统构建应用程序的。当苹果在1996年购买NeXT时,NeXTStep的大部分都被整合到了OSX中,包括现有的类名。Cocoa Touch被引入iOS,作为Cocoa的等价物;Cocoa和Cocoa Touch中都提供了一些类,尽管每个平台都有大量独特的类。 像NS和UI这样的两个字母前缀(用于iOS上的用户界面元素)是为苹果保留的

来源:

比尔·布姆加纳,发布在:

在NS前缀发挥作用后,Sun进入了画面。NS前缀是在从NextStep3.0迁移到NextStep4.0(也称为OpenStep)的过程中出现在公共API中的。在4.0之前,a 少数符号使用NX前缀,但大多数类由 系统库根本没有前缀——列表、哈希表、, 视图等

似乎每个人都同意前缀NX(用于NeXT)一直使用到1993/1994年,并且:

九月发布的官方OpenPosiAPI是第一个在基础和应用程序套件之间拆分API,第一个使用“NS”前缀的软件。


基本上NS来自NextSTEP,这是苹果收购Next时成为macosx的原始操作系统

我想解释一些其他的事情,这就是为什么需要它

<>在C++中有名称空间,几乎任何东西都在<强> STD<强/> /P>中 这就是为什么要使用std::string

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

Objective-C是C的超集,但它不包括名称空间,出于同样的原因,所有系统类都以NS或其他奇怪的前缀作为前缀

这与所有DirectX类的前缀都是D3D和所有OpenGL类的前缀都是gl一样

这意味着您不应该使用NS来命名自己的类,当您在核心动画或核心图形中看到NSCA时,您知道这是对系统框架的调用

Swift改变了这种约定,因为Swift支持名称空间,并且映射了其核心类型,如字符串t