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/

基本概念 #

Combine 是什么?

文档结构 #

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