参考 #
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/
体系结构 #
基本概念 #
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