编程语言中什么是框架?什么是Cocoa?Foundation.framework的底层实现?Swift如何引入ObjC框架?

server/2024/12/2 13:45:18/

编程语言中什么是框架?

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

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

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

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

Foundation.framework的底层实现?

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

Swift如何引入ObjC框架?

import指令引入ObjC库,Swift可以直接使用ObjC类库,非常方便。例如import Cocoa或import Foundation分别引入Cocoa和Foundation类库。


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

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

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


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

相关文章

【Pytorch】优化器(Optimizer)模块‘torch.optim’

torch.optim 是 PyTorch 中提供的优化器(Optimizer)模块,用于优化神经网络模型的参数,更新网络权重,使得模型在训练过程中最小化损失函数。它提供了多种常见的优化算法,如 梯度下降法(SGD&#…

Apache storm安装教程(单机版)

本章教程基于linux centos7安装Apache storm 单机版。 jdk版本:11.0.25 python版本:3.6.8 ZooKeeper 版本:3.7.2 Apache storm版本:2.7.1 一、Apache storm简介 Apache Storm 是一个分布式实时计算系统,专为处理大规模流数据而设计。它允许开发者实时处理大数据流,并对数…

SQL语句在MySQL中的执行过程

一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在 1.2 节中会详细介绍到这些组…

HarmonyOS4+NEXT星河版入门与项目实战(25)------UIAbility启动模式(文档编辑案例)

文章目录 1、启动模式2、Specified启动模式实现步骤3、文档编辑案例1、文件创建2代码实现3、Statge 创建4、添加配置1、启动模式 Singleton启动模式: 每个 UIAbility 只存在一个实例,是默认的启动模式,任务列表中只会存在一个相同的 UIAbilityStandard启动模式: 每次启动 U…

RabbitMQ在手动消费的模式下设置失败重新投递策略

最近在写RabbitMQ的消费者,因为业务需求,希望失败后重试一定次数,超过之后就不处理了,或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的,问了kimi,按它的方法配置之后,发…

C++20: 像Python一样逐行读取文本文件并支持切片操作

概要 逐行读取文本文件,并提取其中连续的几行,这对于 Python 来说是小菜一碟。 C 则很笨拙, 语言不自带这些。 这次我来拯救 C boys & girls, 在 C20 环境下,山寨一个 Python 下的逐行读文本文件、支持 slice 操作…

【C++】 list接口以及模拟实现

list介绍 list文档介绍 C中的list是一个双向链表容器。它允许在任意位置进行快速插入和删除操作,并且能够在常量时间内访问任意元素,并且该容器可以前后双向迭代。 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容…

arcgis for js FeatureLayer和GeoJSON一个矢量点同时渲染图形和文本

效果 FeatureLayer和GeoJSONLayer, 一个矢量点同时渲染图形和文本 代码 相关参数自行查阅文档, 这里就不做注释了 示例代码手动创建FeatureLayer方式, 如果是通过远程url加载图层的 渲染方式同理, GeoJSONLayer同理 <!DOCTYPE html> <html lang"zn"><…