为什么苹果公司Cocoa类库有不少NS前缀?什么是Cocoa?Cocoa和Cocoa Touch是什么语言写成的?Carbon库的没落?Foundation.framework的底层实现?API法王?

为什么苹果公司Cocoa类库有不少NS前缀?

NS 前缀代表 NeXTSTEP,这是 Cocoa 的前身之一。NeXTSTEP 是由 NeXT 公司(由史蒂夫·乔布斯创立)开发的一个操作系统和开发环境,它在1989年首次发布。当苹果公司在1997年收购 NeXT 公司后,NeXTSTEP 的技术成为了 macOS(当时称为 Mac OS X)的基础。因此,Cocoa(macOS 的应用框架)和 Cocoa Touch(iOS 的应用框架)都继承了 NeXTSTEP 的许多命名习惯,包括类和方法的前缀。

什么是Cocoa?

Cocoa是苹果操作系统macOS和iOS上的应用程序开发框架集合,核心语言是Objective-C编程语言,在移动平台被称为Cocoa Touch,Cocoa包含多个子框架,其中最重要的包括Foundation和AppKit(macOS上)或UIKit(iOS上).

  • Foundation框架提供了一系列与图形用户界面无关的基本服务,如字符串处理、集合、文件系统操作等。这些服务对于所有类型的应用程序都是必要的基础设施。
  • AppKit和UIKit是Cocoa中负责用户界面的部分,它包含了创建和管理苹果平台应用程序的用户界面所需的所有类和接口,例如视图(Views)、控制器(Controllers)、窗口(Windows)和其他UI元素。UIKit使得开发者能够以可视化的方式构建应用程序,并处理用户交互。

Windows平台同样有类似的框架以方便程序员使用,例如早期的MFC、ATL,较新的例如WPF.

Cocoa和Cocoa Touch是什么语言写成的?

二者主要都是用Objective-C语言编写而成的。

Carbon库的没落

Carbon是一个较老的框架,用于在经典Mac OS开发应用程序。它主要是基于C语言编写,主要用于与macOS(早期是Mac OS)的界面交互。而Cocoa是一个较新的框架,基于OpenStep和Objective-C开发的,主要用于创建图形用户界面和与之交互。Cocoa和Carbon在早期是平行的关系,但它们在绘制窗口相关的界面库并不相同。Cocoa包含了Foundation Kit和AppKit,而Carbon则包含Core Foundation和Toolbox重组过来的界面库。随着时间的推移,Cocoa逐渐成为macOS应用程序开发的主要框架,而Carbon则逐渐被淘汰。

值得注意的是,Carbon和Cocoa早期为了尽可能的共享通用代码,它们关于Foundation模块中代码会进行一些函数映射,比如CGPoint和NSPoint会有如下定义:typedef CGPoint NSPoint.

Carbon是2000年发布,2007年,Mac OS X 10.5发布,macOS开始向64位过渡,苹果也宣布64位环境和Carbon API不兼容,推荐Cocoa框架,由此Carbon开始没落。2012年10.8版本,苹果不再继续维护更新Carbon. 2017年10.13版本,苹果macOS完全不支持32位应用程序,Carbon已经很少有人提及了。iOS平台不支持Carbon.

注意,不要和Google为了实现"更好的C++"的Carbon语言混淆,它们只是名字恰好一样。

Foundation.framework的底层实现?

Cocoa框架的XX类库底层可能会利用Core XX来实现。比如Foundation.framework底层依赖CoreFoundation.framework的实现,简称CF框架,它提供了C语言接口。可以理解成ObjC语言是C语言上面封装了一层壳。

什么是macOS的五大API法王?

Cocoa、Carbon、POSIX、X11和Java并称为苹果平台的五大API.

  • Cocoa最早从NeXPSTEP类库发展而来,之后又变身为用于移动平台的Cocoa Touch. 它最早是为macOS 开发的一套应用程序框架,它基于 Objective-C. 
  • Carbon 曾经是 macOS 应用程序开发的主要框架之一,但随着 Cocoa 的成熟,Carbon 的使用逐渐减少。它同样也是为macOS 开发的一套应用程序框架,它不是基于ObjC, 而是基于 C 和 C++. 它主要提供了Classic Mac OS 兼容的功能。它曾经是 macOS 应用程序开发的主要框架之一,但随着 Cocoa 的成熟,Carbon 的使用逐渐减少。
  • X11 是一个开源的图形用户界面和窗口系统,它允许 macOS 应用程序使用 X Window 服务器和图形库。
  • 早期,苹果公司在 macOS 上都提供了 Java 运行时环境(JRE)和开发工具,使得开发者可以使用 Java 开发应用程序。后来,苹果逐渐抛弃了Java技术。
  • POSIX(Portable Operating System Interface)是一套操作系统接口标准,macOS内核基于BSD,准确的说是FreeBSD,本身是遵循POSIX标准。开发者可以很容易在Unix/Linux环境和macOS互相切换,因为它们都有一个一致的老祖先。


若文章对您有帮助,欢迎关注 程序员小迷 。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是 程序员小迷 (致力于C、C++、C#、Android、iOS、Java、Kotlin、Objective-C、Swift、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值