內容簡介
《Swift與Cocoa框架開發》係統講解瞭在Mac OS X和iOS 8平颱上,使用蘋果公司的Swift語言開發Mac、iPhone和iPad應用的基本概念和編程技巧。主要圍繞使用Swift語言進行Cocoa框架開發,突齣OS X和iOS開發的差異,教會讀者利用高級Cocoa和Cocoa Touch特性開發真實的應用。具體說來,前麵幾章介紹瞭一般性主題,比如設置開發環境以及Swift語言的語法和功能,後麵各章介紹瞭Cocoa和Cocoa Touch的具體功能。此外,幾乎每一章都包含瞭一些可以遵照執行的實踐練習。
本書適閤各層次Mac OS X和iOS 8應用開發人員閱讀。
作者簡介
Jonathon Manning是澳大利亞獨立遊戲開發工作室Secret Lab的聯閤創始人,移動應用工程師、遊戲設計師、程序員和計算學研究人員,從事過各種項目,曾為孩子們開發過iPad遊戲,也開發過即時通信客戶端。Twitter賬號為@desplesda。
Paris Buttfield-Addison也是Secret Lab的聯閤創始人,移動應用工程師、遊戲設計師和計算學研究人員,緻力於使技術變得簡單又有趣。Paris擁有計算學博士學位。Twitter賬號為@parisba。
Tim Nugent是移動應用開發人員、遊戲設計師、博士生、作傢。大部分時間都用來設計和開發僅供自己娛樂的小應用和遊戲。Twitter賬號為@The_McJones。
內頁插圖
目錄
目錄
前言 XIII
第1 章 Cocoa 開發工具 1
1.1 Mac 和iOS 開發者計劃 1
1.1.1 注冊開發者計劃 2
1.1.2 下載Xcode 3
1.2 用Xcode 創建自己的第一個項目 4
1.3 開發一個簡單的Swift 應用程序 11
1.3.1 設計界麵 11
1.3.2 連接代碼 13
1.4 使用iOS 模擬器 14
1.5 用TestFlight 測試iOS App 16
第2 章 用Swift 設計程序 17
2.1 Swift 程序設計語言 17
2.2 playground 19
2.3 變量和常量 20
2.4 類型 21
2.4.1 元組 23
2.4.2 數組 23
2.4.3 字典 25
2.5 控製流 25
2.6 函數與閉包 29
2.6.1 將函數用作變量 32
2.6.2 閉包 34
2.7 對象 35
2.7.1 繼承 36
2.7.2 初始化與反初始化 37
2.7.3 屬性 38
2.7.4 協議 40
2.7.5 擴展 41
2.7.6 訪問控製 43
2.7.7 運算符 44
2.7.8 泛型 45
2.8 與Objective-C 的互操作 46
2.9 在同一項目中使用Objective-C 和Swift 46
2.9.1 在Objective-C 中使用Swift 對象 46
2.9.2 在Swift 中使用Objective-C 47
2.10 模塊 48
2.11 內存管理 48
2.12 字符串 49
2.12.1 比較字符串 50
2.12.2 查找字符串 50
2.13 數據 50
2.13.1 從文件和URL 加載數據 51
2.13.2 序列化與反序列化 51
2.14 Cocoa 中的設計模式 52
2.14.1 模型- 視圖- 控製器 52
2.14.2 委托 53
第3 章 OS X 和iOS 上的應用程序 56
3.1 什麼是應用程序 56
3.1.1 應用程序、框架、實用工具及其他 57
3.1.2 App 的構成 58
3.1.3 用NSBundle 在應用程序中查找資源 60
3.2 應用程序生命周期 61
3.2.1 OS X 應用程序 61
3.2.2 iOS 應用程序 62
3.3 應用程序沙盒 67
3.4 用NSNotification 發送通知 70
第4 章 圖形用戶界麵 72
4.1 OS X 和iOS 中的界麵 72
4.2 MVC 和應用程序設計 73
4.3 nib 文件和故事闆 73
4.3.1 nib 文件的結構 74
4.3.2 故事闆 77
4.3.3 輸齣口和操作 77
4.3.4 如何加載nib 文件和故事闆 78
4.4 構建界麵 79
4.5 構建具有nib 和約束的App 81
4.6 iOS 上的界麵 84
4.7 UI Dynamics 87
4.7.1 UI 和重力 87
4.7.2 吸附UI 88
4.8 Core Animation 89
4.8.1 層 90
4.8.2 動畫 91
第5 章 閉包和操作隊列 94
5.1 Cocoa 中的閉包 95
5.2 操作隊列中的並發 96
5.3 操作隊列和NSOperation 96
5.4 在操作隊列中執行工作 97
5.5 融會貫通 98
第6 章 在視圖上繪製圖形 103
6.1 如何繪製 103
6.2 像素網格 105
6.2.1 Retina 顯示屏 106
6.2.2 像素與屏幕點 107
6.3 在視圖中繪製 107
6.3.1 框架矩形 107
6.3.2 邊界矩形 108
6.4 創建自定義視圖 109
6.4.1 用純色填充 110
6.4.2 處理路徑 111
6.4.3 創建自定義路徑 112
6.4.4 多條子路徑 114
6.4.5 陰影 115
6.4.6 漸變 119
6.4.7 變換 121
第7 章 SpriteKit 123
7.1 SpriteKit 的體係結構 123
7.2 製作使用SpriteKit 的App 124
7.3 使用SpriteKit 場景 125
7.4 SpriteKit 節點 127
7.5 將精靈放在場景中 128
7.6 對觸碰作齣響應 129
7.7 使用紋理 130
7.8 紋理貼圖集 131
7.9 使用文本 131
7.10 用操作實現內容的動畫 133
7.11 使用形狀節點 134
7.12 使用圖像特效節點 135
7.13 嚮SpirteKit 對象增加物理屬性 137
7.14 嚮SpriteKit 對象添加接閤 138
7.15 SpriteKit 場景照明 138
7.16 約束 139
7.17 在SpriteKit 中使用陰影 140
7.18 使用SpriteKit 編輯器 142
第8 章 SceneKit 143
8.1 SceneKit 結構 144
8.2 使用SceneKit 144
8.3 添加SceneKit 視圖 145
8.4 添加場景 146
8.5 添加照相機 146
8.6 添加3D 對象 147
8.7 添加光源 149
8.8 為場景中的內容實現動畫 150
8.9 創建文本幾何體 151
8.10 使用材料 153
8.11 命中檢測 157
8.12 約束 158
8.13 從COLLADA 文件中加載數據 160
8.14 嚮場景中添加物理仿真 162
第9 章 音頻與視頻 165
9.1 AV Foundation 165
9.2 用AVPlayer 播放視頻 166
9.2.1 AVPlayerLayer 167
9.2.2 融會貫通 167
9.2.3 AVKit 170
9.2.4 iOS 上的AVKit 172
9.2.5 用AVAudioPlayer 播放聲音 174
9.3 語音閤成 175
9.4 使用照片庫 176
9.4.1 從相機采集照片和視頻 176
9.4.2 開發照片應用程序 178
9.4.3 照片庫 181
第10 章 iCloud 和數據存儲 182
10.1 偏好設置 182
10.1.1 注冊默認偏好設置 183
10.1.2 訪問偏好設置 184
10.1.3 設定偏好設置 184
10.2 使用文件係統 184
10.2.1 使用NSFileManager 186
10.2.2 文件存儲位置 189
10.3 使用沙盒 189
10.3.1 啓用沙盒 190
10.3.2 打開和保存麵闆 190
10.3.3 安全範圍內的書簽 191
10.4 iCould 192
10.5 iCloud 存儲什麼 193
10.6 為iCloud 進行設置 194
10.7 測試iCloud 是否正常工作 194
10.8 存儲設置 195
10.8.1 處理外部修改 196
10.8.2 iOS 上的相應內容 197
10.9 iCloud 存儲 199
10.9.1 OS X 上的iCloud 存儲 200
10.9.2 iOS 上的iCloud 存儲 204
10.10 文檔選取器 206
10.11 iCloud 的最佳使用 210
第11 章 Cocoa 綁定 211
11.1 將視圖綁定到模型 211
11.2 一個簡單的綁定App 212
11.3 綁定到控製器 214
11.4 數組和對象控製器 216
11.5 一個更復雜的綁定App 216
第12 章 錶格視圖和集閤視圖 223
12.1 數據源和委托 223
12.2 錶格視圖 224
12.2.1 iOS 上的UITableView 224
12.2.2 OS X 上的NSTableView 231
12.3 集閤視圖 236
第13 章 基於文檔的應用程序 240
13.1 NSDocument 和UIDocument 類 241
13.2 MVC 中的文檔對象 241
13.2.1 文檔的類型 241
13.2.2 文檔的角色 242
13.3 OS X 上基於文檔的應用程序 243
13.3.1 自動保存與版本 243
13.3.2 用NSDocument 錶示文檔 243
13.3.3 保存簡單數據 244
13.3.4 保存更復雜的數據 246
13.4 iOS 上基於文檔的應用程序 250
第14 章 聯網 257
14.1 連接 257
14.1.1 NSURL 258
14.1.2 NSURLRequest 259
14.1.3 NSURLSession 259
14.1.4 NSURLResponse 和NSHTTPURLResponse 260
14.2 開發聯網應用程序 261
14.3 Bonjour 服務的發現 262
14.4 Multipeer Connectivity 264
第15 章 與現實世界互動 269
15.1 使用位置 269
15.1.1 位置硬件 270
15.1.2 Core Location 框架 271
15.1.3 使用Core Location 272
15.
前言/序言
《 Swift與Cocoa框架開發 》圖書簡介 引言: 在數字信息爆炸的時代,應用程序已經滲透到我們生活的方方麵麵,從溝通交流到工作學習,再到娛樂消遣,無一不與應用程序緊密相連。而構建這些強大且用戶友好的應用程序,離不開背後精湛的技術支撐。對於想要投身於蘋果生態係統開發,特彆是希望掌握iOS、macOS、watchOS以及tvOS應用開發的開發者而言,Swift語言和Cocoa框架無疑是不可或缺的兩大基石。 本書《Swift與Cocoa框架開發》旨在為廣大開發者提供一套全麵、深入且實用的學習指南。我們深知,對於許多初學者而言,Swift語言的強大功能和Cocoa框架的龐大體係可能顯得有些令人望而生畏。因此,本書從基礎概念入手,循序漸進地引導讀者掌握Swift語言的核心特性,並逐步深入到Cocoa框架的各個重要組成部分。我們力求通過清晰的講解、豐富的示例和實戰項目,幫助讀者建立起紮實的理論基礎,並快速提升實際開發能力,最終能夠獨立設計並實現高質量的蘋果平颱應用程序。 Swift語言:現代、強大、富有錶現力的編程語言 Swift,由蘋果公司推齣的這門現代編程語言,以其簡潔的語法、卓越的性能和安全性,迅速成為開發蘋果平颱應用的首選。本書將首先帶您領略Swift語言的魅力,深入剖析其核心概念: 基礎語法與數據類型: 從變量、常量、基本數據類型(如整型、浮點型、布爾型、字符串)的聲明和使用,到操作符的運算規則,本書都將為您一一梳理。我們將重點講解Swift獨特的類型推斷機製,以及如何利用字麵量更加便捷地創建和操作各種數據。 集閤類型: 數組(Array)、字典(Dictionary)和集閤(Set)是處理批量數據的常用工具。本書將詳細介紹這些集閤類型的創建、訪問、修改以及常用的操作方法,例如如何添加、刪除、遍曆元素,以及如何進行集閤間的運算。 控製流: 條件語句(if-else, switch)和循環語句(for-in, while)是程序邏輯控製的關鍵。我們將深入講解Swift中更加靈活和富有錶現力的`switch`語句,以及`guard-else`語句在提前退齣循環和函數中的妙用。 函數與閉包: 函數是代碼重用的基本單元。本書將引導您學習如何定義和調用函數,理解函數參數的傳遞方式,以及如何利用函數作為一等公民在程序中傳遞和處理。閉包(Closures)作為Swift中非常強大的特性,將得到重點講解,包括其語法、捕獲值、逃逸閉包等概念,它們在異步編程和迴調機製中扮演著至關重要的角色。 麵嚮對象編程: Swift支持類(Class)、結構體(Struct)和枚舉(Enum)。本書將深入講解麵嚮對象的核心概念,包括屬性(Properties)、方法(Methods)、初始化器(Initializers)、繼承(Inheritance)、多態(Polymorphism)以及協議(Protocols)。特彆地,我們將重點關注Swift中結構體和類的區彆,以及協議在實現代碼復用和解耦方麵的強大能力。 錯誤處理: 健壯的應用程序需要有效的錯誤處理機製。本書將詳細介紹Swift的`do-catch`錯誤處理模式,以及如何定義和拋齣自定義錯誤類型,確保應用程序在異常情況下也能優雅地運行。 內存管理(ARC): 自動引用計數(Automatic Reference Counting, ARC)是Swift內存管理的核心。本書將幫助您理解ARC的工作原理,識彆並解決潛在的循環引用問題,從而編寫齣高效且無內存泄漏的代碼。 泛型(Generics): 泛型允許您編寫靈活且可重用的函數和類型,能夠處理多種類型的值。本書將深入講解泛型函數的創建和使用,以及泛型類型的定義,幫助您寫齣更具通用性的代碼。 並發(Concurrency): 隨著多核處理器的普及,並發編程變得越來越重要。本書將介紹Swift的現代並發模型,包括`async/await`語法、Actors以及Task Groups等,幫助您構建響應迅速且高性能的應用程序。 Cocoa框架:構建卓越用戶體驗的基石 Cocoa是蘋果提供的一套強大的麵嚮對象框架,它為開發者提供瞭構建macOS、iOS、watchOS和tvOS應用程序所需的一切。本書將帶領您係統地探索Cocoa框架的核心組成部分,並展示如何將Swift語言的強大功能與其相結閤: Foundation框架: Foundation框架是Cocoa的核心,提供瞭許多基礎類和常量,涵蓋瞭數據管理、集閤、文件操作、網絡通信、日期和時間等通用功能。我們將深入講解Foundation框架中的關鍵類,如`NSString`、`NSArray`、`NSDictionary`、`NSNumber`、`Date`、`URL`等,並演示如何在Swift代碼中有效地使用它們。 UIKit/AppKit框架: UIKit(iOS/tvOS/watchOS): UIKit是構建iOS、tvOS和watchOS應用程序用戶界麵的核心框架。本書將詳細介紹UI元素的創建和管理,包括視圖(Views)、視圖控製器(View Controllers)、控件(Controls,如`UIButton`、`UILabel`、`UITextField`)以及布局(Layout)技術。我們將重點講解Auto Layout,一種強大的聲明式布局係統,它能幫助您輕鬆創建適應不同屏幕尺寸的自適應界麵。同時,我們將深入探討事件處理機製、手勢識彆(Gestures)以及多綫程在UI開發中的應用。 AppKit(macOS): AppKit是構建macOS應用程序用戶界麵的核心框架。本書將為您解析AppKit中的主要組件,如`NSView`、`NSViewController`、`NSButton`、`NSTextField`等,以及macOS特有的特性,如菜單(Menus)、工具欄(Toolbars)、窗口(Windows)和文檔模型(Document Model)。我們將同樣強調macOS應用的布局和響應式設計。 Core Data: 對於需要管理大量結構化數據的應用程序,Core Data是一個不可或缺的持久化框架。本書將詳細介紹Core Data的實體(Entities)、屬性(Attributes)、關係(Relationships)以及數據模型(Data Model)的設計。您將學會如何創建、查詢、更新和刪除數據,並瞭解如何利用Core Data實現數據的本地存儲和同步。 Networking(網絡通信): 現代應用程序通常需要與互聯網進行數據交互。本書將重點介紹Cocoa中的網絡框架,包括`URLSession`。您將學習如何發起HTTP請求、處理服務器響應、下載和上傳文件,以及實現RESTful API的調用。 Core Animation/Core Graphics: 為瞭創建富有視覺吸引力和動態效果的應用程序,動畫和圖形渲染至關重要。本書將初步介紹Core Animation,幫助您理解動畫的基本原理,並實現視圖的平滑過渡和復雜動畫效果。我們也會觸及Core Graphics,讓您瞭解如何進行低級彆的圖形繪製。 其他重要框架(適時介紹): 根據實際內容需要,本書可能還會適時介紹其他與開發密切相關的Cocoa框架,例如: MapKit: 用於在應用程序中集成地圖功能。 Core Location: 用於獲取設備的位置信息。 UserNotifications: 用於發送本地和遠程通知。 SwiftUI(作為補充): 盡管本書側重於傳統的UIKit/AppKit,但可能會在閤適的章節對SwiftUI這一聲明式UI框架進行簡要介紹,以幫助讀者瞭解未來的開發趨勢。 實戰項目與最佳實踐:理論聯係實際 本書最大的特色之一在於其貫穿始終的實戰項目。我們相信,理論知識隻有與實際應用相結閤,纔能真正轉化為開發者的能力。從簡單的“Hello, World!”應用,到功能完善的待辦事項列錶、天氣預報應用,再到更復雜的網絡數據展示應用,每一個示例都精心設計,力求貼近真實開發場景。 在每個實戰項目中,我們將: 明確項目目標: 清晰地闡述項目的需求和預期功能。 逐步分解任務: 將復雜的開發任務分解為可管理的子任務,降低學習難度。 講解核心技術: 在實現過程中,我們會重點講解所使用的Swift語言特性和Cocoa框架組件。 提供完整代碼: 提供清晰、可運行的示例代碼,方便讀者學習和參考。 強調設計模式: 在適當的時候,我們會引入並講解MVC(Model-View-Controller)等經典的應用程序設計模式,以及Swift UI中 MVVM(Model-View-ViewModel)等現代設計模式,幫助讀者構建可維護、可擴展的應用程序。 分享開發技巧: 總結和分享在開發過程中遇到的常見問題、調試技巧以及性能優化方法。 引入測試: 鼓勵讀者編寫單元測試和UI測試,提高代碼質量和應用程序的穩定性。 本書的讀者對象: 本書適閤以下人群: 編程初學者: 對編程有濃厚興趣,希望學習一門現代、高效的編程語言(Swift),並將其應用於移動或桌麵應用開發。 跨平颱開發者: 具備其他編程語言經驗,希望快速掌握Swift和Cocoa框架,進入蘋果生態係統開發。 希望深入理解Swift和Cocoa的開發者: 已經有一定Swift或Cocoa開發經驗,希望係統地梳理知識體係,深入理解其底層原理和高級特性。 夢想成為iOS/macOS/watchOS/tvOS應用開發者的學習者: 無論您是學生、在職開發者還是希望轉行進入蘋果開發領域的愛好者,本書都將是您堅實的起點。 結語: 《Swift與Cocoa框架開發》不僅僅是一本技術書籍,更是您通往蘋果平颱應用開發世界的導航圖。我們希望通過本書,您能夠掌握Swift語言的精髓,理解Cocoa框架的強大之處,並最終能夠自信地將您的創意轉化為一個個精彩的應用程序。讓我們一起踏上這段激動人心的Swift與Cocoa開發之旅吧!