Xcode

参考 #

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
AppKitmacOS 原生 UI 框架,类似 UIKit,专为桌面应用设计。macOS
WatchKit用于开发 watchOS 应用的 UI 框架,功能相对简化。watchOS
核心框架Foundation基础框架,提供字符串、集合、文件管理、日期等基础功能。全平台
Core Data数据持久化框架,支持对象关系映射(ORM)和复杂数据模型管理。全平台
Core Animation动画和图层渲染框架,用于实现流畅的界面动画。全平台
图形与动画Metal高性能图形和计算 API,替代 OpenGL,支持 GPU 加速。全平台
Core Graphics (Quartz)2D 绘图框架,支持矢量图形、PDF 渲染等。全平台
SpriteKit2D 游戏开发框架,支持动画、物理引擎和粒子效果。全平台
SceneKit3D 图形渲染框架,支持模型加载、光照和物理模拟。全平台
数据与网络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 中。全平台
TestFlightBeta 测试分发平台,用于内部和外部测试。全平台
跨平台技术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+
RealityKitAR 和 3D 内容开发框架,支持实体交互和物理效果。iOS/iPadOS

补充说明 #

  1. 平台适配

    • iOS/iPadOS:主推 SwiftUI + UIKit,结合 ARKit、Core ML 等。
    • macOS:AppKit(传统)或 SwiftUI(现代),Catalyst 用于跨平台移植。
    • watchOS:SwiftUI + WatchKit,侧重轻量化交互。
    • tvOS:UIKit 或 SwiftUI,支持焦点交互和媒体播放。
    • 跨平台:优先使用 SwiftUI + Combine,减少平台差异代码。
  2. 技术选型建议

    • 新项目:SwiftUI + Combine + Core Data + Swift Concurrency。
    • 旧项目维护:UIKit/AppKit + Objective-C(逐步迁移至 Swift)。
    • 游戏开发:Metal + SpriteKit/SceneKit(或第三方引擎如 Unity)。
    • 机器学习:Core ML + Create ML(模型训练工具)。
  3. 扩展学习

基本概念 #

Foundation #

Foundation 框架提供了基础的、不依赖用户界面的核心功能。它是 Cocoa 应用程序的基础,使用了许多核心数据类型和服务,例如字符串处理、集合操作、日期和时间管理、多线程、文件操作、网络处理等。

  • 数据类型:如 NSStringNSArrayNSDictionaryNSSet 等。
  • 日期与时间:如 NSDateNSCalendar 等。
  • 文件管理:如 NSFileManagerNSData 等。
  • URL 和 NSData:如 NSURLNSURLRequest 等。
  • 通知:如 NSNotificationCenter
  • 多线程与并发:如 NSThreadNSOperationQueue 等。

Foundation 是构建所有 Cocoa 框架的基石,不依赖任何具体平台(相同的框架也存在于 iOS 的 Foundation 框架中)。

AppKit #

AppKit 框架则是专门用于 macOS 的应用程序开发的,它建立在 Foundation 之上,提供了开发图形用户界面(GUI)所需的所有组件和功能。

  • 窗口和视图:如 NSWindowNSView
  • 控件:如 NSButtonNSTableViewNSCollectionView
  • 事件处理:如键盘事件、鼠标事件。
  • 绘图:如 NSImageNSBezierPathNSGraphicsContext
  • 动画:如 NSAnimation
  • 文档处理:如 NSDocumentNSDocumentController
  • 菜单:如 NSMenuNSMenuItem

UIKit #

UIKit 是专门用于 iOS、watchOS 和 tvOS 平台的 GUI 框架,用于构建这些系统的图形用户界面。它也建立在 Foundation 框架之上并提供了以下功能:

  • 窗口和视图管理:如 UIWindowUIView
  • 用户控件:如 UIButtonUITableViewUICollectionView
  • 事件处理:如触摸事件、手势识别。
  • 绘图功能:如 UIImageUIBezierPathUIGraphicsContext
  • 动画和过渡:如 UIView 动画、过渡动画。
  • 导航控制:如 UINavigationControllerUITabBarController
  • 手势识别:如 UITapGestureRecognizerUIPanGestureRecognizer

SwiftUI #

SwiftUI 和 Appkit、UIKit 一样,也是构建在 Foundation 之上的高级 UI 框架。

关系和区别 #

关系 #

  1. 继承关系
    • Foundation:位于基础层,提供通用的数据处理和应用程序管理功能。
    • AppKit 和 UIKit:都建立在 Foundation 之上,分别为 macOS 和 iOS 提供 GUI 组件。
  2. 互补关系
    • 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 前缀开头。

除了 NSUI 前缀,苹果平台上还有其他一些常见的前缀或命名约定,这些前缀通常用于标识特定功能或框架。以下是几个主要的前缀及其含义:

常见前缀和命名约定 #

  1. NS

    • 框架: Foundation 和 AppKit
    • 用途: 主要用于表示 NeXTSTEP 系统中的类,这是由于苹果公司在收购 NeXT 公司后继承了其命名约定。
    • 示例: NSString, NSArray, NSView, NSWindow
  2. UI

    • 框架: UIKit
    • 用途: 主要用于 iOS, watchOS 和 tvOS 的用户界面相关类。
    • 示例: UIButton, UILabel, UIView, UITableView
  3. CG

    • 框架: Core Graphics
    • 用途: 主要用于处理低级别的 2D 图形绘制。
    • 示例: CGContext, CGImage, CGRect, CGPoint
  4. CA

    • 框架: Core Animation
    • 用途: 主要用于动画和图层相关的功能。
    • 示例: CALayer, CAAnimation, CABasicAnimation
  5. AV

    • 框架: AVFoundation、AVKit
    • 用途: 主要用于音频和视频处理。
    • 示例: AVPlayer, AVAudioPlayer, AVCaptureSession
  6. CL

    • 框架: Core Location
    • 用途: 主要用于定位和地理信息相关的功能。
    • 示例: CLLocation, CLLocationManager, CLGeocoder
  7. MK

    • 框架: MapKit
    • 用途: 主要用于地图和地理位置相关的功能。
    • 示例: MKMapView, MKAnnotation, MKOverlay
  8. SK

    • 框架: SpriteKit
    • 用途: 主要用于 2D 游戏开发及物理引擎。
    • 示例: SKSpriteNode, SKScene, SKAction
  9. SCN

    • 框架: SceneKit
    • 用途: 主要用于 3D 图形渲染和游戏开发。
    • 示例: SCNNode, SCNScene, SCNCamera
  10. MTL

    • 框架: Metal
    • 用途: 主要用于高性能图形和计算。
    • 示例: MTLDevice, MTLCommandBuffer, MTLRenderPipelineState