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/

体系结构 #

mindmap id(Xcode) Swift PropertyWrapper Generic SwiftUI Scene Windows WindowGroup View Button List TabView Environment Menu Foundation UserDefaults UIKit UIViewController UITableViewDataSource UIPageViewController UIWindow AppKit SwiftData CoreData CloudKit Deciding whether CloudKit is right for your app

基本概念 #

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