Cocoa/Cocoa Touch中的许多类都有NS前缀。这是什么意思?
当前回答
它是NextStep (= NS)遗产。NeXT是乔布斯1985年离开苹果公司后成立的电脑公司,NextStep是它的操作系统(基于UNIX)以及Obj-C语言和运行时。NextStep连同它的库和工具,后来被重新命名为OpenStep(这也是NeXT和Sun一起开发的API上的名字),后来又变成了Cocoa。
这些不同的名字实际上很让人困惑(特别是因为有些名字只在字符是大写或小写时才不同..),尝试下面的解释:
TheMerger OpenstepConfusion
其他回答
它来自NeXTSTEP传统。
NeXTSTEP或NeXTSTEP/Sun取决于你问的是谁。
有一段时间,Sun在OpenStep上有相当大的投资。在Sun加入之前,基金会中的大多数东西,尽管当时还不叫基金会,前缀都是NX,代表NeXT,在Sun加入之前的某个时候,所有东西都被重命名为NS。S很可能并不代表Sun,但在Sun加入后,人们普遍认为它代表Sun,以纪念他们的参与。
实际上我有一个参考资料,但我现在找不到。如果/当我再次找到它时,我会更新这篇文章。
来自Cocoa_(API)维基百科:
(重点)
Cocoa classes begin with the acronym "NS" (standing either for the NeXT-Sun creation of OpenStep, or for the original proprietary term for the OpenStep framework, NeXTSTEP): NSString, NSArray, etc. Foundation Kit, or more commonly simply Foundation, first appeared in OpenStep. On Mac OS X, it is based on Core Foundation. Foundation is a generic object-oriented library providing string and value manipulation, containers and iteration, distributed computing, run loops, and other functions that are not directly tied to the graphical user interface. The "NS" prefix, used for all classes and constants in the framework, comes from Cocoa's OPENSTEP heritage, which was jointly developed by NeXT and Sun.
Cocoa框架的原始代码来自NeXTSTEP库基金会和AppKit(这些名称仍然被苹果的Cocoa框架使用),NeXTSTEP的工程师选择用NS作为他们的符号前缀。
因为Objective-C是C的扩展,因此不像c++那样有名称空间,符号必须有一个唯一的前缀,这样它们就不会发生冲突。这对于在框架中定义的符号尤为重要。
如果您正在编写一个应用程序,以便您的代码可能只使用您的符号,那么您不必担心这个问题。但是如果您正在编写供他人使用的框架或库,您还应该为您的符号添加一个唯一的前缀。CocoaDev有一个页面,许多Cocoa社区的开发人员列出了他们“选择”的前缀。您可能也会发现这个SO讨论很有帮助。
它是NextStep (= NS)遗产。NeXT是乔布斯1985年离开苹果公司后成立的电脑公司,NextStep是它的操作系统(基于UNIX)以及Obj-C语言和运行时。NextStep连同它的库和工具,后来被重新命名为OpenStep(这也是NeXT和Sun一起开发的API上的名字),后来又变成了Cocoa。
这些不同的名字实际上很让人困惑(特别是因为有些名字只在字符是大写或小写时才不同..),尝试下面的解释:
TheMerger OpenstepConfusion
推荐文章
- 如何删除默认的导航栏空间在SwiftUI导航视图
- 数据挖掘中分类和聚类的区别?
- 如何在iOS中使用Swift编程segue
- Swift -整数转换为小时/分钟/秒
- Swift:声明一个空字典
- 为什么ARC仍然需要@autoreleasepool ?
- 在成功提交我的应用程序后,“太多符号文件”
- 首先添加一个UIView,甚至是导航栏
- 我如何改变UIButton标题颜色?
- 如何从UIImage (Cocoa Touch)或CGImage (Core Graphics)获取像素数据?
- 在Swift中如何调用GCD主线程上的参数方法?
- NSLayoutConstraints是可动画的吗?
- iOS -构建失败,CocoaPods无法找到头文件
- Xcode 4挂在“附加到(应用程序名称)”
- 主体、使用者和主体之间的意义和区别是什么?