Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言?

server/2025/2/3 4:49:48/

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

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

什么是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.

编程语言中什么是框架?

在编程语言中,框架(Framework)是一种特定的软件库,它提供了一套预先定义的代码和组件,用于加速和简化特定类型的应用程序的开发。框架通常提供了一套标准化的开发工具集和约定,使得开发者可以专注于应用程序的核心逻辑,而不是从头开始编写所有底层代码。

  • 框架作者觉得这些代码交给其它程序员开发,浪费时间,还容易写错,最终难以维护,不如直接写好给他们用。

Java的Springboot, Windows的WPF/MFC, 跨平台组件QT,移动端Vue/React,iOS的Cocoa Touch UIKit都是框架的一种。

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

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

Swift编程语言

Swift是苹果公司于2014年WWDC(苹果开发者大会)推出的一种新的编程语言,为了替代ObjC,它的设计目标是解决Objective-C的一些局限性和现代编程语言的需求,提供一种安全、快速、现代的编程语言,同时保持易用性和表现力。它吸收了多种编程语言的优点,如Python、Ruby、C#等,并加入了一些新的特性,如自动内存管理、函数式编程等。Swift将预期是iOS、macOS、watchOS和tvOS应用程序的首选开发语言。

Swift的特点

  • 干净
    保持C语言简洁特征,如果在适当位置加上括号,var/let用类型和const代替,类型不放在变量之后,Swift和C语言似乎没区别。
  • 现代
    Swift发布于2014年WWDC,鉴于ObjC是80年代产生,保留较多旧语言特征,在近几十年间,各种更现代化的高级语言和脚本语言诞生,ObjC是兼容C语言的,没法直接套用其它语言的优秀特性。Swift正为此需求而生,吸收了现代高级语言和脚本语言的优秀语法,coding更自然简洁高效。
  • 安全
    尽管ObjC并非多不安全,但它们依然保留C语言旧时代设计时带有的"易出错"的语法。Swift尽可能减少易出错的语法,减少未定义的行为,减少程序员因此产生的运行期不预期的行为。
  • 性能
    虽然Swift看起来像脚本,很多高级特性,但它是实打实的编译型语言,可以提供C/ObjC/C++近乎同等的性能。

平台支援

  • 2014年,Xcode 6首次支持Swift beta测试版。
  • 2015~2016年,苹果开始准备支持Linux平台的Swift 2.2版本,2016年发布正式版支持Linux平台。
  • 2020年,Swift 5.3版本第一次官方支持Windows平台。

开源

2015年12月4日,苹果开放Swift编译器和库的源代码。

兼容性

  • 苹果发布Swift语言,允许Swift和ObjC同时使用,Swift代码可以复用已有的Cocoa和Cocoa Touch框架。


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

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

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


http://www.ppmy.cn/server/164521.html

相关文章

Java中的线程安全的集合类(如果想知道Java中有关线程安全的集合类的知识,那么只看这一篇就足够了!)

前言:在多线程环境中,集合类的线程安全性是保证数据一致性和避免并发冲突的关键。Java 提供了多种线程安全集合类,它们在不同的并发场景中有着各自的优缺点。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不…

Linux——网络(tcp)

文章目录 目录 文章目录 前言 一、TCP逻辑 1. 面向连接 三次握手(建立连接) 四次挥手(关闭连接) 2. 可靠性 3. 流量控制 4. 拥塞控制 5. 基于字节流 6. 全双工通信 7. 状态机 8. TCP头部结构 9. TCP的应用场景 二、编写tcp代码函数…

接口使用实例(3)

大家好,今天我们来用冒泡排序来实现学生类的排序,更深入的了解一下接口使用。 注: CompareTo 方法和equals方法作用不同. 1. compareTo 返回值为int, equals返回值为boolean. 2. compareTo比较两个内容的大小关系, equals是判断两个内容是否相等. …

嵌入式硬件篇---CPUGPUTPU

文章目录 第一部分:处理器CPU(中央处理器)1.通用性2.核心数3.缓存4.指令集5.功耗和发热 GPU(图形处理器)1.并行处理2.核心数量3.内存带宽4.专门的应用 TPU(张量处理单元)1.为深度学习定制2.低精…

【AI】DeepSeek 概念/影响/使用/部署

在大年三十那天,不知道你是否留意到,“deepseek”这个词出现在了各大热搜榜单上。这引起了我的关注,出于学习的兴趣,我深入研究了一番,才有了这篇文章的诞生。 概念 那么,什么是DeepSeek?首先百…

基于深度学习的输电线路缺陷检测算法研究(论文+源码)

输电线路关键部件的缺陷检测对于电网安全运行至关重要,传统方法存在效率低、准确性不高等问题。本研究探讨了利用深度学习技术进行输电线路关键组件的缺陷检测,目的是提升检测的效率与准确度。选用了YOLOv8模型作为基础,并通过加入CA注意力机…

第三章 人工智能和机器学习

如果将语谱图看作一张图片,就相当于把语音识别的问题变成图片分类问题。这样利用网络上大量的语料库,我们就可以训练一个机器学习模型,构建自己的语音识别体系。 本章我们将尝试利用自己录入的语音数据来完成一个简单的短语识别程序&#xf…

傅里叶分析之掐死教程

https://zhuanlan.zhihu.com/p/19763358 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析 不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多…