参考 #
Foundation
https://developer.apple.com/documentation/foundation
App 审核指南
https://developer.apple.com/cn/app-store/review/guidelines/
中文文档
https://developer.apple.com/cn/documentation/
SwiftGG
https://swiftgg.team/
这个页面可以找到更多苹果官方开发教程,以及下面几个链接
https://developer.apple.com/learn/
体系结构 #
Apple 开发技术栈分类表 #
分类 | 技术/框架名称 | 描述 | 适用平台 |
---|---|---|---|
编程语言 | Swift | 现代、安全的编程语言,Apple 生态首选语言,支持面向协议、函数式编程。 | 全平台(iOS/macOS等) |
Objective-C | 传统 Apple 开发语言,兼容 C,现逐渐被 Swift 替代,但仍用于维护旧项目。 | 全平台 | |
C/C++ | 用于底层开发(如游戏引擎、系统级代码),通过 Objective-C 或 Swift 桥接调用。 | 全平台 | |
UI 框架 | SwiftUI | 声明式 UI 框架,统一 iOS/macOS/watchOS/tvOS 开发,支持实时预览。 | iOS 13+/macOS 10.15+ 等 |
UIKit | 传统 iOS/tvOS UI 框架,基于 MVC 模式,提供丰富的控件和交互。 | iOS/tvOS | |
AppKit | macOS 原生 UI 框架,类似 UIKit,专为桌面应用设计。 | macOS | |
WatchKit | 用于开发 watchOS 应用的 UI 框架,功能相对简化。 | watchOS | |
核心框架 | Foundation | 基础框架,提供字符串、集合、文件管理、日期等基础功能。 | 全平台 |
Core Data | 数据持久化框架,支持对象关系映射(ORM)和复杂数据模型管理。 | 全平台 | |
Core Animation | 动画和图层渲染框架,用于实现流畅的界面动画。 | 全平台 | |
图形与动画 | Metal | 高性能图形和计算 API,替代 OpenGL,支持 GPU 加速。 | 全平台 |
Core Graphics (Quartz) | 2D 绘图框架,支持矢量图形、PDF 渲染等。 | 全平台 | |
SpriteKit | 2D 游戏开发框架,支持动画、物理引擎和粒子效果。 | 全平台 | |
SceneKit | 3D 图形渲染框架,支持模型加载、光照和物理模拟。 | 全平台 | |
数据与网络 | Combine | 响应式编程框架,处理异步事件流(类似 RxSwift)。 | iOS 13+/macOS 10.15+ 等 |
URLSession | 网络请求框架,支持 HTTP/HTTPS、WebSocket 等协议。 | 全平台 | |
CloudKit | 云端数据存储和同步服务,与 iCloud 深度集成。 | 全平台 | |
系统服务 | Core Location | 地理位置和定位服务,支持 GPS、蓝牙信标等。 | 全平台 |
HealthKit | 健康和健身数据管理框架,与 Apple Health 集成。 | iOS/watchOS | |
ARKit | 增强现实开发框架,支持面部追踪、环境感知等。 | iOS/iPadOS | |
Core ML | 机器学习模型集成框架,支持设备端推理。 | 全平台 | |
SiriKit | 集成 Siri 语音交互功能,支持自定义意图和响应。 | iOS/macOS/watchOS | |
开发工具 | Xcode | 官方集成开发环境(IDE),支持代码编辑、调试、界面设计和性能分析。 | macOS |
Instruments | 性能分析工具,用于检测内存泄漏、CPU 使用率等。 | macOS | |
Swift Package Manager | 依赖管理和代码分发工具,集成在 Xcode 中。 | 全平台 | |
TestFlight | Beta 测试分发平台,用于内部和外部测试。 | 全平台 | |
跨平台技术 | Catalyst | 将 iPad 应用移植到 macOS 的技术,共享代码库。 | macOS (iPad 应用移植) |
Flutter (第三方) | Google 的跨平台 UI 框架,支持 iOS/macOS 开发。 | 全平台(需 Dart 语言) | |
React Native (第三方) | Meta 的跨平台框架,使用 JavaScript/TypeScript 开发原生应用。 | 全平台 | |
其他关键框架 | StoreKit | 应用内购买和订阅管理框架,支持 Apple 支付流程。 | 全平台 |
AVFoundation | 音视频处理框架,支持录制、播放、编辑和流媒体。 | 全平台 | |
MapKit | 地图和地理位置服务集成,支持自定义标注和路线规划。 | 全平台 | |
WidgetKit | 开发主屏幕小组件(Widget),支持动态数据和交互。 | iOS 14+/macOS 11+ | |
GameKit | 游戏社交功能集成(如排行榜、多人对战)。 | 全平台 | |
PassKit (Apple Pay) | 集成 Apple Pay 和电子钱包(Wallet)功能。 | 全平台 | |
WeatherKit | 天气数据 API,提供实时和预报天气信息。 | iOS 16+/macOS 13+ | |
新近技术 | Swift Concurrency | 异步编程模型(async/await),简化多线程和任务管理。 | iOS 15+/macOS 12+ |
Swift Charts | 声明式图表绘制框架,集成于 SwiftUI。 | iOS 16+/macOS 13+ | |
RealityKit | AR 和 3D 内容开发框架,支持实体交互和物理效果。 | iOS/iPadOS |
补充说明 #
平台适配:
- iOS/iPadOS:主推 SwiftUI + UIKit,结合 ARKit、Core ML 等。
- macOS:AppKit(传统)或 SwiftUI(现代),Catalyst 用于跨平台移植。
- watchOS:SwiftUI + WatchKit,侧重轻量化交互。
- tvOS:UIKit 或 SwiftUI,支持焦点交互和媒体播放。
- 跨平台:优先使用 SwiftUI + Combine,减少平台差异代码。
技术选型建议:
- 新项目:SwiftUI + Combine + Core Data + Swift Concurrency。
- 旧项目维护:UIKit/AppKit + Objective-C(逐步迁移至 Swift)。
- 游戏开发:Metal + SpriteKit/SceneKit(或第三方引擎如 Unity)。
- 机器学习:Core ML + Create ML(模型训练工具)。
扩展学习:
- 官方文档:Apple Developer Documentation
- 技术栈图谱:Swift → SwiftUI → Combine → Core Data → Core ML/ARKit。
基本概念 #
Foundation #
Foundation 框架提供了基础的、不依赖用户界面的核心功能。它是 Cocoa 应用程序的基础,使用了许多核心数据类型和服务,例如字符串处理、集合操作、日期和时间管理、多线程、文件操作、网络处理等。
- 数据类型:如
NSString
、NSArray
、NSDictionary
、NSSet
等。 - 日期与时间:如
NSDate
、NSCalendar
等。 - 文件管理:如
NSFileManager
、NSData
等。 - URL 和 NSData:如
NSURL
、NSURLRequest
等。 - 通知:如
NSNotificationCenter
。 - 多线程与并发:如
NSThread
、NSOperationQueue
等。
Foundation 是构建所有 Cocoa 框架的基石,不依赖任何具体平台(相同的框架也存在于 iOS 的 Foundation
框架中)。
AppKit #
AppKit 框架则是专门用于 macOS 的应用程序开发的,它建立在 Foundation 之上,提供了开发图形用户界面(GUI)所需的所有组件和功能。
- 窗口和视图:如
NSWindow
、NSView
。 - 控件:如
NSButton
、NSTableView
、NSCollectionView
。 - 事件处理:如键盘事件、鼠标事件。
- 绘图:如
NSImage
、NSBezierPath
、NSGraphicsContext
。 - 动画:如
NSAnimation
。 - 文档处理:如
NSDocument
、NSDocumentController
。 - 菜单:如
NSMenu
、NSMenuItem
。
UIKit #
UIKit 是专门用于 iOS、watchOS 和 tvOS 平台的 GUI 框架,用于构建这些系统的图形用户界面。它也建立在 Foundation 框架之上并提供了以下功能:
- 窗口和视图管理:如
UIWindow
、UIView
。 - 用户控件:如
UIButton
、UITableView
、UICollectionView
。 - 事件处理:如触摸事件、手势识别。
- 绘图功能:如
UIImage
、UIBezierPath
、UIGraphicsContext
。 - 动画和过渡:如
UIView
动画、过渡动画。 - 导航控制:如
UINavigationController
、UITabBarController
。 - 手势识别:如
UITapGestureRecognizer
、UIPanGestureRecognizer
。
SwiftUI #
SwiftUI 和 Appkit、UIKit 一样,也是构建在 Foundation 之上的高级 UI 框架。
关系和区别 #
关系 #
- 继承关系:
- Foundation:位于基础层,提供通用的数据处理和应用程序管理功能。
- AppKit 和 UIKit:都建立在 Foundation 之上,分别为 macOS 和 iOS 提供 GUI 组件。
- 互补关系:
- Foundation 提供核心功能:如数据管理、文件操作、网络通信和多线程支持等。
- AppKit 和 UIKit 拓展了 Foundation:提供了 GUI 组件和用户交互功能,确保可以在各自平台上构建丰富的用户界面应用。
区别 #
平台:
- Foundation:跨多平台使用,包括 macOS、iOS、watchOS 和 tvOS。
- AppKit:仅用于 macOS 平台。
- UIKit:用于 iOS、watchOS 和 tvOS 平台。
功能侧重:
- Foundation:侧重于非图形用户界面的核心功能。
- AppKit 和 UIKit:专注于图形用户界面的构建和用户事件处理,但它们的控件和 API 是针对各自的平台进行优化和设计的。
类前缀:
- Foundation:类通常以
NS
前缀开头(源于 NeXTSTEP,历史原因)。 - AppKit:大多数类也以
NS
前缀开头。 - UIKit:类通常以
UI
前缀开头。
- Foundation:类通常以
除了 NS
和 UI
前缀,苹果平台上还有其他一些常见的前缀或命名约定,这些前缀通常用于标识特定功能或框架。以下是几个主要的前缀及其含义:
常见前缀和命名约定 #
NS
- 框架: Foundation 和 AppKit
- 用途: 主要用于表示 NeXTSTEP 系统中的类,这是由于苹果公司在收购 NeXT 公司后继承了其命名约定。
- 示例:
NSString
,NSArray
,NSView
,NSWindow
UI
- 框架: UIKit
- 用途: 主要用于 iOS, watchOS 和 tvOS 的用户界面相关类。
- 示例:
UIButton
,UILabel
,UIView
,UITableView
CG
- 框架: Core Graphics
- 用途: 主要用于处理低级别的 2D 图形绘制。
- 示例:
CGContext
,CGImage
,CGRect
,CGPoint
CA
- 框架: Core Animation
- 用途: 主要用于动画和图层相关的功能。
- 示例:
CALayer
,CAAnimation
,CABasicAnimation
AV
- 框架: AVFoundation、AVKit
- 用途: 主要用于音频和视频处理。
- 示例:
AVPlayer
,AVAudioPlayer
,AVCaptureSession
CL
- 框架: Core Location
- 用途: 主要用于定位和地理信息相关的功能。
- 示例:
CLLocation
,CLLocationManager
,CLGeocoder
MK
- 框架: MapKit
- 用途: 主要用于地图和地理位置相关的功能。
- 示例:
MKMapView
,MKAnnotation
,MKOverlay
SK
- 框架: SpriteKit
- 用途: 主要用于 2D 游戏开发及物理引擎。
- 示例:
SKSpriteNode
,SKScene
,SKAction
SCN
- 框架: SceneKit
- 用途: 主要用于 3D 图形渲染和游戏开发。
- 示例:
SCNNode
,SCNScene
,SCNCamera
MTL
- 框架: Metal
- 用途: 主要用于高性能图形和计算。
- 示例:
MTLDevice
,MTLCommandBuffer
,MTLRenderPipelineState