本書將會(huì)幫助你使用Xcode6工具提高工作效率,編寫優(yōu)秀的代碼并能使用**的iOS8和OSXYosemite特性,包括Apple**的Swift編程語言。這是**一本專注于介紹需要深入掌握且每天都要使用的Xcode6書籍。作者發(fā)現(xiàn)了更佳的方法介紹storyboard、instrument、構(gòu)建和編譯代碼,幫助你應(yīng)用新特性:從InterfaceBuilderLiveRendering到ViewDebugging和XCTestPerformanceTesting。
Contents?目 錄
譯者序
前 言
**部分 起步
第1章 獲取Xcode 2
1.1 開始之前 2
1.2 安裝Xcode 3
1.3 移除Xcode 4
1.4 Apple開發(fā)者計(jì)劃 5
1.5 下載Xcode 6
1.6 額外需要下載的內(nèi)容 7
1.7 小結(jié) 8
第2章 初識(shí)Xcode 9
2.1 啟動(dòng)Xcode 9
2.2 Hello World 11
2.2.1 新建項(xiàng)目 11
2.2.2 讓Xcode安靜下來 13
2.2.3 構(gòu)建和運(yùn)行 14
2.2.4 貨真價(jià)實(shí)的程序 15
2.3 刪除項(xiàng)目 15
2.4 小結(jié) 15
第3章 簡(jiǎn)單的工作流程和被動(dòng)調(diào)試 16
3.1 創(chuàng)建項(xiàng)目 16
3.2 構(gòu)建 19
3.3 運(yùn)行 21
3.4 簡(jiǎn)單調(diào)試 22
3.5 小結(jié) 23
第4章 主動(dòng)調(diào)試 24
4.1 一個(gè)簡(jiǎn)單的測(cè)試用例 24
4.2 開始主動(dòng)調(diào)試 24
4.2.1 設(shè)置斷點(diǎn) 25
4.2.2 變量窗格 26
4.2.3?單步調(diào)試 27
4.3 解決這個(gè)問題 28
4.3.1 行為 28
4.3.2 解決方法 31
4.4 小結(jié) 31
第5章 編譯 32
5.1 編譯 32
5.2 動(dòng)態(tài)載入 38
5.3 Xcode和Clang 38
5.3.1 本地分析 39
5.3.2 跨函數(shù)分析 41
5.3.3 索引 42
5.4 Swift 43
5.5 編譯產(chǎn)品 47
5.5.1 中間產(chǎn)品 47
5.5.2 預(yù)編譯 49
5.6 小結(jié) 51
第6章 添加庫(kù)target 52
6.1 添加target 52
6.2 target關(guān)系 54
6.2.1 添加文件到target中 54
6.2.2 target中的頭文件 56
6.3 從屬target 56
6.3.1 添加庫(kù) 57
6.3.2 調(diào)試依賴target 59
6.4 小結(jié) 59
第7章 版本控制 60
7.1 采取控制 61
7.2 文件狀態(tài) 63
7.3 首次提交 65
7.4 使用遠(yuǎn)程版本庫(kù) 66
7.4.1 本地建立一個(gè)“遠(yuǎn)程”版本庫(kù) 68
7.4.2 將文件推送到遠(yuǎn)程服務(wù)器 69
7.5 合并與沖突 70
7.5.1 User A 70
7.5.2 User B 73
7.5.3 返回User A 75
7.6 版本編輯器 78
7.6.1 Comparison 78
7.6.2 Blame 80
7.6.3 Log 81
7.7 分支 81
7.8 小結(jié) 83
第二部分 iOS應(yīng)用程序的生命周期
第8章 開始制作iOS應(yīng)用程序 86
8.1 規(guī)劃應(yīng)用程序 86
8.1.1 模型–視圖–控制器 86
8.1.2 模型 87
8.1.3?視圖 87
8.1.4 控制器 88
8.2 開始制作一個(gè)全新的iOS項(xiàng)目 89
8.3 項(xiàng)目中都包含什么 91
8.4 小結(jié) 93
第9章 iOS應(yīng)用程序:模型 94
9.1 實(shí)現(xiàn)模型 94
9.1.1 實(shí)體 95
9.1.2 屬性 95
9.1.3 關(guān)系 97
9.2 托管對(duì)象類 100
9.2.1 創(chuàng)建類——錯(cuò)誤的方法 100
9.2.2 為什么按照Xcode的方式做是個(gè)錯(cuò)誤 102
9.2.3 正確的方法——使用mogenerator 102
9.3 準(zhǔn)備 105
9.3.1 Utilities 105
9.3.2 擴(kuò)展類 105
9.3.3 passer_rating 107
9.4 定制Core Data類 108
9.4.1 在項(xiàng)目中添加Game數(shù)據(jù) 108
9.4.2 在項(xiàng)目中添加Passer數(shù)據(jù) 109
9.4.3 一些測(cè)試數(shù)據(jù) 110
9.4.4 源代碼控制和產(chǎn)品文件 112
9.5 讓模型更容易調(diào)試 114
9.6 小結(jié) 115
第10章 iOS應(yīng)用程序:控制器 116
10.1 Objective-C中的符號(hào)重命名 116
10.1.1 重構(gòu)Objective-C方法名 117
10.1.2 重構(gòu)類名 117
10.2 在Swift中重命名類 118
10.3 編輯View Controller 119
10.3.1 表視圖 120
10.3.2 構(gòu)建Passer List 121
10.3.3 新建Passer 121
10.4 生命周期問題及處理方法 122
10.5 真正的Passer Rating 123
10.5.1 另外一個(gè)bug 123
10.5.2 運(yùn)行Passer Rating 127
10.6 小結(jié) 128
第11章 構(gòu)建新視圖 129
11.1 下一個(gè)視圖控制器 129
11.1.1 如果想要添加新視圖控制器 129
11.1.2 storyboard、scene和segue 130
11.2 創(chuàng)建視圖 133
11.2.1 Passing中的Outlet和Assistant 134
11.2.2 Billboard視圖 136
11.2.3 鏈接視圖與視圖控制器 137
11.2.4?特定場(chǎng)合下的自動(dòng)布局 138
11.2.5?各種標(biāo)簽 140
11.2.6 清理 142
11.3 表視圖 144
11.4 outlet 145
11.4.1 連接outlet 146
11.4.2 檢查連接 147
11.4.3 連接GameListController 148
11.4.4 代碼補(bǔ)全和片段 149
11.4.5 代碼片段 150
11.5 測(cè)試Billboard View 152
11.6 小結(jié) 153
第12章 新視圖的自動(dòng)布局 154
12.1 為什么選擇自動(dòng)布局 154
12.1.1 Autoresizing的局限 155
12.1.2 Auto Layout 155
12.1.3 需要牢記的問題 155
12.2 重新制作Player Billboard 156
12.3 重構(gòu)子視圖布局 157
12.3.1 Playground 158
12.3.2 StatView 160
12.3.3 安裝StatView 164
12.4 設(shè)計(jì)約束 165
12.5 兩行、兩個(gè)標(biāo)簽 167
12.6 實(shí)際的約束 169
12.6.1 默認(rèn)(Any/Any) 170
12.6.2 Any Height(非Compact) 170
12.6.3 Landscape(wAny/hCompact) 171
12.6.4 解決問題 171
12.6.5 細(xì)節(jié)修改 171
12.7 小結(jié) 172
第13章 添加表格單元格 173
13.1 Game表 173
13.1.1 Table View中的outlet 173
13.1.2 添加所需的Protocol方法 174
13.1.3 添加Model-to-View的支持 175
13.1.4 原型元素 176
13.2 Game Table:**次運(yùn)行 177
13.3 自定義表格單元格 179
13.4 添加一些圖形 182
13.4.1 帶有圖片的單元格 182
13.4.2 將Image視圖與圖片聯(lián)系在一起 182
13.4.3?Assets目錄 183
13.4.4 向Assets Catalog中添加圖片 184
13.4.5 圖標(biāo)和啟動(dòng)圖片 186
13.5 小結(jié) 188
第14章 添加編輯器 189
14.1 計(jì)劃 189
14.2 添加模型場(chǎng)景 189
14.2.1 嵌入的View Controller 191
14.2.2 將Passer List與Editor相連 193
14.2.3 Static Table Cells 194
14.3 編輯器視圖控制器 195
14.3.1 編輯器表 195
14.3.2 將數(shù)據(jù)傳遞給編輯器 197
14.3.3 從編輯器中獲得數(shù)據(jù) 198
14.4 segue 200
14.5 小結(jié) 201
第15章 單元測(cè)試 202
15.1 Test Navigator 203
15.2 測(cè)試CSV Reader 204
15.2.1 CSV 測(cè)試代碼 205
15.2.2 測(cè)試數(shù)據(jù) 209
15.2.3 運(yùn)行測(cè)試程序 210
15.3 測(cè)試和調(diào)試器 211
15.4 添加測(cè)試類 213
15.5 異步測(cè)試 216
15.5.1 測(cè)試異步代碼 217
15.5.2 文檔 217
15.6 XCTest斷言 218
15.6.1 簡(jiǎn)單測(cè)試 218
15.6.2 等價(jià) 219
15.6.3 異常 219
15.7 小結(jié) 220
第16章 度量和分析 221
16.1 速度 221
16.1.1 Debug 調(diào)試器 222
16.1.2 Instruments 224
16.2 XCTest和性能 231
16.3 內(nèi)存 232
16.4 小結(jié) 233
第17章 iOS擴(kuò)展 234
17.1 添加Today Target 235
17.2 設(shè)計(jì)掛件 235
17.3 框架內(nèi)的共享庫(kù) 239
17.4 Today擴(kuò)展 244
17.5 構(gòu)建依賴 247
17.6 結(jié)果 248
17.7 小結(jié) 248
第18章 配置 249
18.1 Apple開發(fā)者計(jì)劃 249
18.1.1 通用(App Store)計(jì)劃 250
18.1.2 企業(yè)計(jì)劃 250
18.2 iOS的配置 251
18.2.1 你會(huì)看到什么 251
18.2.2 注冊(cè)你的App 253
18.2.3 保護(hù)資源 254
18.2.4 提交iOS應(yīng)用程序 255
18.3?功能編輯器 257
18.3.1 OS X獨(dú)有的功能 257
18.3.2 iOS和OS X中都有的功能 257
18.3.3 iOS功能 258
18.4 OS X沙箱 259
18.4.1 為什么要選擇沙箱 261
18.4.2?沙箱的缺點(diǎn) 261
18.5 Gatekeeper 和Developer ID 262
18.5.1 獲取Developer ID 262
18.5.2 使用 Developer ID 263
18.5.3 限制 264
18.6 發(fā)布構(gòu)建 264
18.6.1 基本的構(gòu)建設(shè)置 265
18.6.2 調(diào)整構(gòu)建設(shè)置 265
18.6.3 構(gòu)建 267
18.7 小結(jié) 268
第三部分 Mac OSX開發(fā)中的Xcode
第19章 開始制作OS X應(yīng)用程序 270
19.1 目標(biāo) 270
19.2 開始 271
19.3 模型 274
19.3.1 從iOS移植 274
19.3.2 添加實(shí)體 275
19.4 制作菜單 278
19.4.1 Target/Action 279
19.4.2 First Responder 280
19.4.3 將數(shù)據(jù)載入LeagueDocument 281
19.4.4 適應(yīng)托管文檔 281
19.4.5 測(cè)試命令 283
19.4.6 為L(zhǎng)eague 數(shù)據(jù)確定一個(gè)類型 284
19.4.7 確定App如何處理League文件 285
19.4.8 應(yīng)用程序和文檔圖標(biāo) 286
19.5 小結(jié) 287
第20章 綁定:連接OS X 應(yīng)用程序 288
20.1 OS X中的Storyboard Segue 288
20.2 構(gòu)建文檔窗口 290
20.2.1 載入窗口 290
20.2.2 表視圖 291
20.3 填充表——綁定 294
20.3.1 對(duì)象控制器 294
20.3.2 將表綁定到Team 296
20.3.3 將列綁定到Team屬性 297
20.4 League文檔數(shù)據(jù)的結(jié)構(gòu) 299
20.4.1 從League表到Source List 299
20.4.2 捕獲Team的選擇 301
20.4.3 從Team到表 303
20.4.4 Passer部分 304
20.5 小結(jié) 311
第21章 本地化 312
21.1 本地化的工作原理 312
21.2 添加本地化 313
21.2.1 Base Localization 313
21.2.2 為什么需要 Base Localization 314
21.3 哪些需要本地化 315
21.3.1 游戲細(xì)節(jié)視圖:布局 315
21.3.2 游戲細(xì)節(jié)視圖:代碼 317
21.3.3 模塊和命名空間 319
21.4 法語本地化 320
21.4.1 添加語言環(huán)境 320
21.4.2 由簡(jiǎn)入繁:Credits.rtf 323
21.4.3 本地化Main.storyboard 325
21.4.4 本地化資源 328
21.4.5 本地化程序字符串 329
21.4.6 genstrings 330
21.4.7 xliff文件 331
21.4.8 其他 332
21.5 本地化系統(tǒng)字符串 332
21.6 小結(jié) 334
第22章 程序包 335
22.1 簡(jiǎn)單的包:RTFD 335
22.2 bundle 336
22.3 應(yīng)用程序的bundle 337
22.4 Info.plist File 338
22.5 Info.plist中用于應(yīng)用程序的鍵 340
22.5.1 用于iOS和OS X的鍵 340
22.5.2 OS X中使用的鍵 342
22.5.3 iOS中使用的鍵 345
22.6 小結(jié) 347
第23章 屬性列表 348
23.1 屬性列表數(shù)據(jù)類型 348
23.2 編輯屬性列表 350
23.2.1 屬性列表編輯器 352
23.2.2 為什么不使用屬性列表編輯器 356
23.3 其他格式 358
23.3.1 文本屬性列表 358
23.3.2 二進(jìn)制屬性列表 359
23.3.3 JSON 360
23.4 特殊的屬性列表 361
23.5 小結(jié) 362
第四部分 Xcode任務(wù)集
第24章 Xcode中的文檔 364
24.1 Quick Help 364
24.1.1 Inspector 364
24.1.2 彈出窗口 365
24.2 快速打開 366
24.3 幫助 367
24.4 文檔窗口 368
24.4.1 側(cè)邊導(dǎo)航欄 368
24.4.2 側(cè)邊欄的內(nèi)容表 368
24.4.3 類信息 368
24.4.4 查找和導(dǎo)航 369
24.5 保持同步 371
24.6 自定義的Quick Help 373
24.6.1 C語言系列的文檔 373
24.6.2 Doxygen 375
24.6.3 運(yùn)行Doxygen 380
24.6.4 安裝文檔集合 380
24.7 Swift和reStructuredText 381
24.8 小結(jié) 383
第25章 Xcode構(gòu)建系統(tǒng) 384
25.1 Xcode如何組織構(gòu)建過程 384
25.2 構(gòu)建變量 387
25.3 設(shè)置的層級(jí) 388
25.4 編輯構(gòu)建變量 389
25.5 配置 390
25.6 配置文件 392
25.6.1 創(chuàng)建配置文件 392
25.6.2 SDK和指定的架構(gòu)設(shè)置 393
25.6.3 預(yù)處理xcconfig文件 393
25.7 命令行工具 394
25.7.1 xcodebuild 394
25.7.2 xcode-select 395
25.7.3 xcrun 396
25.8 自定義構(gòu)建規(guī)則 397
25.9 構(gòu)建日志 398
25.10 簡(jiǎn)單的構(gòu)建記錄 400
25.11 小結(jié) 408
第26章 Instruments 409
26.1 Instruments是什么 409
26.2 運(yùn)行Instruments 410
26.3 記錄文檔窗口 411
26.3.1 工具欄 412
26.3.2 記錄區(qū)域 414
26.3.3 Detail區(qū)域 415
26.3.4 Extended Detail區(qū)域 415
26.3.5 庫(kù) 418
26.4 追蹤 419
26.4.1 記錄 419
26.4.2 保存和重新打開 422
26.4.3 不啟動(dòng)instrument記錄 422
26.5 Instruments 422
26.5.1 Behavior 423
26.5.2 Core Data 423
26.5.3 Dispatch 423
26.5.4 Filesystem 423
26.5.5 Graphics 424
26.5.6 Input/Output 424
26.5.7 Master Tracks 424
26.5.8 Memory 425
26.5.9 系統(tǒng) 425
26.5.10 System-iOS Energy Instruments 427
26.5.11 線程/鎖 427
26.5.12 記錄 428
26.5.13 UI Automation 428
26.5.14 用戶界面 428
26.6 自定義Instruments 429
26.7 模板 430
26.7.1 全部平臺(tái) 430
26.7.2 僅限iOS 430
26.7.3 僅限Mac 431
26.8 小結(jié) 431
第27章 調(diào)試 432
27.1 Scheme選項(xiàng) 432
27.1.1 Info 432
27.1.2 參數(shù) 433
27.1.3 選項(xiàng) 433
27.1.4 診斷 435
27.2 使用斷點(diǎn)做更多的工作 435
27.3 視圖層級(jí) 437
27.4 lldb命令行 439
27.5 小技巧 441
27.6 小結(jié) 444
第28章 零散的知識(shí) 445
28.1 技巧 445
28.1.1 一般技巧 445
28.1.2 代碼折疊 449
28.1.3 Assistant編輯器 450
28.1.4 Instruments和調(diào)試 452
28.1.5 構(gòu)建 452
28.2 陷阱 454
第五部分 附錄
附錄A 一些構(gòu)建變量 460
附錄B 資源 474