在我们印象中, Apple 和开源
没有任何关系, 相比 Android 的各种定制和魔改, 苹果可谓是关闭之极, 开发者必须在苹果的结构下开发, 无法逾越一步。
关闭的商业形式在确保了极致的用户体会
的一起也决议了苹果的开源无法想其他的公司相同, 被很多的开发者认识和了解
实际上苹果关闭的只有体系的用户体会层和商业软件,体系的底层库大部分是开源的,不论是体系内核Darwin Xnu、GCD仍是 Swift、OC runtime,亦或是 WebKit 这个重要的 Web 组件,无不证明苹果的开源精神, 苹果也在拥抱广大开源爱好者。
本文介绍苹果官方的一些开源网站和组件, 包含源码地址、文档和版别等信息, 作为iOS/MacOS开发您不容错失。
首先是Apple三个首要开源网站
-
opensource.apple.com
苹果专门规划的一个开源官网, 列出了苹果主导和参与的一些开源库
-
github.com/apple
包含
Swift
言语和swift-package-manager swift-foundation swift-nio等Swift组件库, 苹果开源的主战场
-
github.com/apple-oss-d…
iOS/MacOS
体系组件库
, 包括内核xnu
、动态链接器dyld
、objc4
(runtime) GCD(libdispatch), 和各个体系组件库
下面介绍常用的组件和库
Swift
-
官网: www.swift.org
-
源码: github.com/apple/swift
-
中文教程: www.cnswift.org
-
最新版别: 5.9
目前苹果开源的中心, 最先进的生产力和现代开发言语, 让我们都能开发出众的 App。
旨在为开发者供给充沛的自在。Swift 易用并且开源,只要有主意,谁都能够创造非凡。
open and powerful
SPM
swift-package-manager
- 源码: github.com/apple/swift…
- 阐明文档: www.swift.org/getting-sta…
- 最新版别: 0.6.0
协助Swift开发人员办理项目,以便复用代码及简化办理流程。
和 Cocoapods、Carthage 效果相似
支撑 iOS、macOS、watchOS 和 tvOS 体系
swift-nio
- 源码: github.com/apple/swift…
- 最新版别: 2.57.0
基于事情驱动的Swift for Server
开发结构,用于快速开发高功用且易于维护的Server程序
为了提高功用,SwfitNIO 运用非阻塞 IO,不论是发送数据仍是接收数据,运用程序都无需等候,体系内核会在有可操作的 IO 时通知 SwfitNIO。
效果相似 Netty,但开发言语是 Swift。
支撑的渠道
Ubuntu 18.04+
macOS 10.14+
iOS 12+
swift-corelibs-foundation
- 源码: github.com/apple/swift…
Foundation 结构是苹果 macOS 和 iOS 的中心结构,几乎一切的 Swift/OC 项目都运用 Foundation 结构, 供给了各种最基础的东西类和运用API。
运用 Swift 重新完成了 Foundation 结构, 不再需求 C 和 Swift 桥接,从而提高功用。该项目旨在为Server Side
开发供给体量更小更方便的跨渠道开发结构。
objc4(OC Runtime)
- 源码: github.com/apple-oss-d…
- 官方文档: developer.apple.com/documentati…
- 最新版别: objc4-876
Objective-C
runtime
库源码,它是 Objective-C 面向对象和动态机制的基石
xnu
- 源码: github.com/apple-oss-d…
- 最新版别: xnu-8796.101.5
xnu is not unix
xnu内核是Mac和iOS的中心,是结合了微内核与宏内核特性的混合内核,它包括三个部分:Mach、BSD 和 I/O Kit
。
GCD
- 源码: github.com/apple-oss-d…
- 最新版别: libdispatch-1415.100.11
Grand Central Dispatch
(GCD) 是 Apple 开发的多线程
编程技术。优化App以支撑多核处理器。它在线程池形式的基础上执行的并发任务。支撑 iOS 和 MacOS体系
优势:
- 优化多核的并行运算
- 主动运用更多的 CPU 内核(比方双核、四核)
- 主动办理线程的生命周期(创建线程、调度任务、销毁线程)
- 只需求告诉 GCD 想要执行什么任务,不需求编写任何线程办理代码
dyld
- 源码: github.com/apple-oss-d…
- 最新版别: dyld-1066.8
dyld 全称 the dynamic link editor
,即动态链接器,是专门用来加载动态库
的库。
苹果体系的重要组成部分,在App被编译打包成可执行文件格式的 Mach-O 文件之后 ,交由 dyld 负责链接和加载程序。
Core Foundation
- 源码: github.com/apple-oss-d…
- 最新版别: CF-1153.18
Core Foundation和Foundation 功用根本一致, 区别是Core Foundation是由C言语
完成的,而Foundation是 Objective-C 完成的, 为iOS和MacOS供给根本数据办理和服务功用。
distribution-macOS
- 源码: github.com/apple-oss-d…
- 最新版别: macOS 13.0
MacOS 体系的驱动结构、IOKit和各种底层库的调集
下面是苹果参与的开源项目
Webkit
- 源码: github.com/WebKit/WebK…
- 官网: webkit.org
- 最新版别: WebKit-7615.3.12.11.3
WebKit是跨渠道的Web浏览器引擎
, 是 Apple Web的中心
Safari、Mail、App Store 以及 macOS/iOS/Linux很多 App 都是基于WebKit来构建 web 服务的。
llvm/Clang
- 源码: github.com/llvm/llvm-p…
- 官网: llvm.org
- 最新版别: LLVM 16.0.6
Apple一开始运用GCC
作为编译器,GCC对Objective-C的言语特性支撑一直不行
所以苹果重新开发了LLVM这一整套编译前端
和后端
的项目,llvm是这个项目的代号,
它是高度优化的编译器、优化器和运行时环境。
Clang是LLVM的前端,用来编译C
、C++
和Objective-C
代码,
sqlite
- 源码: github.com/sqlite/sqli…
- 官网: sqlite.org
- 最新版别: version-3.42.0
SQLite
是开源跨渠道轻量级数据库, 是移动端数据库的标准, 完成了无服务器的、零配置的、业务性的 SQL 数据库引擎
。
优势:
- 不需求一个独自的服务器进程或操作的体系(无服务器的)。
- 不需求安装或办理。
- 跨渠道, 数据库文件一切渠道通用, 包括Android、iOS、Linux/Unix、Mac OS和 Windows
- 库非常小, 轻量级
- 没有任何外部的依靠
- 业务是完全兼容 ACID 的,答应从多个进程或线程安全拜访。
- 支撑 SQL92(SQL2)标准的大多数查询言语的功用。
GNU step(开源Cocoa)
- 源码: github.com/gnustep/lib…
- 下载地址: wwwmain.gnustep.org/resources/d…
- 官网介绍: gnustep.github.io/resources/d…
- 最新版别: base-1_29_0
GNU step是GNU方案的项目之一,它将Cocoa的OC库重新开源完成了一遍。运用GNUstep了解Cocoa
结构的完成原理。
虽然GNU step不是苹果官方源码,但仍是具有必定的参考价值 !!
GNUstep Base
- KVO: Source/NSKeyValueObserving.m
- KVC: Source/NSKeyValueCoding.m
- NSRunLoop: Source/NSRunLoop.m
- NSThread: Source/NSThread.m
- NSOperation : Source/NSOperation.m
GNUstep GUI
- NSView
- NSViewController