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传统

NS前缀是什么意思?相关推荐

  1. [ios学习入门3]--oc中NS的含义

    NS是什么意思? Cocoa对其所有函数,常量和类型名前面都加了前缀"NS"   ,这个前缀告诉你函数来自Cocoa而不是其他工具包. 好处:防止两个不同的事物因为名称一样而发生冲 ...

  2. Objective-C语法简记

    开始学习iPhone开发了,虽然现在已经有了Swift,但我还是老老实实地学习Objective-C,鄙人入门的程序语言是C,后来学习了C#和Java,现在来学Objective-C,这篇只是一些很简 ...

  3. iOS架构设计-URL缓存(上)

    转载自崔江涛(KenshinCui) http://www.cnblogs.com/kenshincui/p/iOS-jia-gou-she-jiURL-huan-cun.html 概览 缓存组件应该 ...

  4. Object-C 入门介绍

    大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到 Interface Builder之后,第一感想是跃跃欲试,而看到Objective-C的语法,第一感想就变成就望而却步了 ...

  5. iOS - OC iOS 开发体系

    1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...

  6. Swift中使用正则表达式

    Swift中使用正则表达式 环境:swift3 xcode8 一.什么时候我们需要使用正则表达式 1.判断一些字符是否符合所需要求: 2.用于检索文本中所需字段. 二.正则表达式的语法 正则表达式的创 ...

  7. 如何使用Swift获取App版本和内部版本号?

    本文翻译自:How do I get the App version and build number using Swift? I have an IOS app with an Azure bac ...

  8. Objective-C 编码规范

    Objective-C 编码规范,内容来自苹果.谷歌的文档翻译,自己的编码经验和对其它资料的总结. 概要 Objective-C 是一门面向对象的动态编程语言,主要用于编写 iOS 和 Mac 应用程 ...

  9. 【iOS 开发】Objective-C 入门 Xcode 环境详解

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38424965 一. Xcode 环境安装 与 工程创建 1. ...

最新文章

  1. Django的静态文件的配置
  2. ei加声调怎么加_空调怎么加氟 空调加氟方法【介绍】
  3. SAP UI5 应用开发教程之四十七 - 如何自定义 SAP UI5 字符串类型输入字段的校验逻辑
  4. L3-020 至多删三个字符 (30 分) DP
  5. java并发(3)ThreadLocal的使用及实现原理(实现原理)
  6. ubuntu16.04 虚拟机装机后常用操作
  7. linux中id命令的功能,Linux id命令参数及用法详解
  8. 【转】使用C语言实现MD5消息摘要算法
  9. 黄聪:基于jQuery+JSON的省市区三级地区联动
  10. 彩虹系统改良版源码附带N种模板虚拟商城源码
  11. 【元宇宙经济学】元宇宙经济的四个特征
  12. Android技巧之相对高度使用
  13. java范例大全尹继平_Java范例大全
  14. android+添加网络权限,已在AndroidManifest.xml增添网络权限,运行还报错
  15. 基于freemarker(mht)方式导出带图片的富文本word
  16. lij IDEA项目包分层结构显示设置
  17. 云计算 第4章 云计算与移动互联网/物联网
  18. 计算机屏幕自己动,电脑显示器老是自动调整怎么办
  19. Python初学者图形绘制
  20. MOS管的源极和漏极是否可以互换使用,场效应管的D极和S极呢?

热门文章

  1. 【Pytorch】model.train() 和 model.eval() 原理与用法
  2. 阿里云安全ACP认证试验之阿里云Web应用防火墙接入体验
  3. 电脑显示器连接主机 没反应 no signal!!
  4. 微信公众平台编辑器教程-微信公众号使用教程32
  5. 在线文档编辑插件——KindEditor
  6. Linux 下man 命令的使用
  7. TESS NG微观交通仿真软件二次开发接口如何规划
  8. 软工实践 - 第十一次作业 Alpha 冲刺 (3/10)
  9. 5年运维经验分享:一个小白走向高级运维工程师之路
  10. Android——自定义带刻度的SeekBar单向拖动条