NS前缀是什么意思?

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


#1楼

来自苹果的开发人员文档:

历史注释:如果您想知道为什么遇到的这么多类都带有NS前缀,那是由于Cocoa和Cocoa Touch的历史。 Cocoa从收集到的用于为NeXTStep操作系统构建应用程序的框架开始。 当苹果公司在1996年购买NeXT时,许多NeXTStep被合并到OS X中,包括现有的类名。 Cocoa Touch作为iOS的Cocoa引入。 Cocoa和Cocoa Touch中都提供了一些类,尽管每种平台也有很多类是唯一的。 保留NS和UI之类的两个字母的前缀(用于iOS上的用户界面元素)供Apple使用。

来源: 使用Objective-C编程


#2楼

Bill Bumgarner aka @bbum应该知道,他 在2005年发布在CocoaBuilder邮件列表中

在NS前缀生效后,Sun进入了图片。 从NeXTSTEP 3.0迁移到NeXTSTEP 4.0(也称为OpenStep)期间,NS前缀出现在公共API中。 在4.0之前的版本中,少数符号使用NX前缀,但是系统库提供的大多数类根本没有前缀-列表,哈希表,视图等。

似乎每个人都同意前缀NX(用于NeXT)一直使用到1993/1994年, Apple的文档说

正式的OpenStep API于1994年9月发布,它是第一个在Foundation和Application Kit之间划分API的人,也是第一个使用“ NS”前缀的人。


#3楼

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

我想解释一下其他原因,这就是为什么确实需要它。

在C ++中有命名空间,几乎所有东西都放在std中

这就是为什么您拥有std :: string的原因。

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

Objective-C是C的超集,但是它不包含名称空间,并且出于相同的原因,所有系统类都用NS或其他一些奇怪的前缀进行了前缀。

这与所有DirectX类如何用D3D预先固定以及所有OpenGL类如何用gl预先固定相同。

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

Swift更改了此约定,因为Swift支持名称间隔,并将其核心类型(如String)映射到NS等效项。


#4楼

它来自NeXTSTEP的传承。


#5楼

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

因为Objective-C是C的扩展,因此没有像C ++中那样的名称空间,所以必须给符号加上唯一的前缀,以免它们发生冲突。 这对于框架中定义的符号特别重要。

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


#6楼

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

这些不同的名称实际上是很令人困惑的(特别是由于某些名称仅在大写或小写字符方面有所不同。),请尝试以下方式进行解释:

合并开放式混乱


#7楼

N eXT S TEP或N eXTSTEP / S取决于您要询问的人。

Sun在OpenStep上进行了相当大的投资。 在Sun输入图片之前,基金会中的大多数事物都被命名为NX ,以N e X T命名,尽管当时它并不被称为Foundation,而且在Sun进入图片之前的某个时候,所有事物都被重命名为NSS很可能当时不代表Sun,但在Sun达成普遍共识之后, S代表Sun表示对他们的参与表示敬意。

我实际上对此有参考,但现在找不到。 如果/当我再次找到它时,我将更新该帖子。


#8楼

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


#9楼

来自Cocoa_(API)维基百科

(强调)

可可类以首字母缩写“ NS”开头(代表OpenStepNeXT-Sun创建 ,或代表OpenStep框架的原始专有术语NeXTSTEP ):NSString,NSArray等。

Foundation Kit (或更常见的Foundation )首先出现在OpenStep中 。 在Mac OS X上,它基于Core Foundation。 Foundation是一个通用的面向对象的库,提供字符串和值操作,容器和迭代,分布式计算,运行循环以及其他与图形用户界面没有直接联系的功能。 框架中所有类和常量使用的“ NS”前缀来自NeXTSun共同开发的可可的OPENSTEP传统

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值