iOS編程基礎:Swift,Xcode和Cocoa入門指南是一本由馬特·諾伊貝格寫的一本書,是該作者另一本書《Programming iOS 9》的配套參考書。
基本介紹
- 書名:iOS編程基礎:Swift,Xcode和Cocoa入門指南
- 作者:(美)馬特·諾伊貝格(Matt Neuburg)著
- ISBN:978-7-111-55635-0
- 定價:¥129.00
- 出版社:機械工業出版社
- 出版時間:2017-04
- 開本:16
基本信息,內容簡介,
基本信息
作者:(美)馬特·諾伊貝格(Matt Neuburg)著 |
ISBN(書號):978-7-111-55635-0 |
出版日期:2017-04 |
版次:1/1 |
開本:16 |
定價:¥129.00 |
內容簡介
本書實際上是我的另一本書《Programming iOS 9》的配套參考書,該書以本書的結束作為起點。它們之間是互補的。我相信,這兩本書的結構合理、內容通俗易懂。它們提供了開始編寫iOS套用所需的完整基礎知識;這樣,在開始編寫iOS套用時,你會對將要做的事情以及方向有著深刻的理解。如果編寫iOS程式類似於用磚蓋房子,那么本書將會介紹什麼是磚以及如何使用它,而《Programming iOS 9》則會給你一些實際的磚並告訴你如何將其堆砌起來。
目錄
前言 1
第一部分 語言
第1章 Swift架構縱覽 11
1.1 基礎 11
1.2 萬物皆對象 12
1.3 對象類型的3種風格 14
1.4 變數 14
1.5 函式 15
1.6 Swift檔案的結構 16
1.7 作用域與生命周期 19
1.8 對象成員 20
1.9 命名空間 20
1.10 模組 21
1.11 實例 22
1.12 為何使用實例 24
1.13 self 26
1.14 隱私 27
1.15 設計 29
1.15.1 對象類型與API 29
1.15.2 實例創建、作用域與生命周期 31
1.15.3 小結 32
第2章 函式 34
2.1 函式參數與返回值 34
2.1.1 Void返回類型與參數 37
2.1.2 函式簽名 38
2.2 外部參數名 38
2.3 重載 41
2.4 默認參數值 42
2.5 可變參數 43
2.6 可忽略參數 44
2.7 可修改參數 44
2.8 函式中的函式 48
2.9 遞歸 49
2.10 將函式作為值 50
2.11 匿名函式 53
2.12 定義與調用 57
2.13 閉包 58
2.13.1 閉包是如何改善代碼的 59
2.13.2 返回函式的函式 61
2.13.3 使用閉包設定捕獲變數 64
2.13.4 使用閉包保存捕獲的環境 64
2.14 柯里化函式 66
第3章 變數與簡單類型 68
3.1 變數作用域與生命周期 68
3.2 變數聲明 69
3.3 計算初始化器 72
3.4 計算變數 73
3.5 setter觀察者 76
3.6 延遲初始化 77
3.7 內建簡單類型 79
3.7.1 Bool 80
3.7.2 數字 81
3.7.3 String 88
3.7.4 Character 93
3.7.5 Range 96
3.7.6 元組 98
3.7.7 Optional 102
第4章 對象類型 114
4.1 對象類型聲明與特性 114
4.1.1 初始化器 115
4.1.2 屬性 122
4.1.3 方法 125
4.1.4 下標 127
4.1.5 嵌套對象類型 128
4.1.6 實例引用 129
4.2 枚舉 131
4.2.1 帶有固定值的Case 132
4.2.2 帶有類型值的Case 133
4.2.3 枚舉初始化器 134
4.2.4 枚舉屬性 136
4.2.5 枚舉方法 137
4.2.6 為何使用枚舉 138
4.3 結構體 139
4.3.1 結構體初始化器、屬性與方法 139
4.3.2 將結構體作為命名空間 140
4.4 類 141
4.4.1 值類型與引用類型 142
4.4.2 子類與父類 146
4.4.3 類初始化器 151
4.4.4 類析構器 159
4.4.5 類屬性與方法 159
4.5 多態 161
4.6 類型轉換 164
4.7 類型引用 168
4.8 協定 172
4.8.1 為何使用協定 174
4.8.2 協定類型測試與轉換 176
4.8.3 聲明協定 177
4.8.4 可選協定成員 178
4.8.5 類協定 180
4.8.6 隱式必備初始化器 180
4.8.7 字面值轉換 182
4.9 泛型 183
4.9.1 泛型聲明 185
4.9.2 類型約束 186
4.9.3 顯式特化 189
4.9.4 關聯類型鏈 190
4.9.5 附加約束 192
4.10 擴展 196
4.10.1 擴展對象類型 196
4.10.2 擴展協定 199
4.10.3 擴展泛型 202
4.11 保護類型 203
4.11.1 AnyObject 203
4.11.2 AnyClass 206
4.11.3 Any 207
4.12 集合類型 208
4.12.1 Array 208
4.12.2 Dictionary 222
4.12.3 Set 227
第5章 流程控制與其他 232
5.1 流程控制 232
5.1.1 分支 233
5.1.2 循環 245
5.1.3 跳轉 250
5.2 運算符 261
5.3 隱私性 264
5.3.1 Private聲明 265
5.3.2 Public聲明 267
5.3.3 隱私性規則 267
5.4 內省 267
5.5 記憶體管理 269
5.5.1 弱引用 270
5.5.2 無主引用 272
5.5.3 匿名函式中的弱引用與無主引用 273
5.5.4 協定類型引用的記憶體管理 275
第二部分 IDE
第6章 Xcode項目剖析 279
6.1 新建項目 279
6.2 項目視窗 281
6.2.1 導航窗格 282
6.2.2 輔助窗格 288
6.2.3 編輯器 289
6.3 項目檔案及其依賴 291
6.4 目標 293
6.4.1 構建階段 294
6.4.2 構建設定 296
6.4.3 配置 297
6.4.4 方案與目標 298
6.5 從項目到運行套用 300
6.5.1 構建設定 303
6.5.2 屬性列表設定 303
6.5.3 nib檔案 304
6.5.4 其他資源 305
6.5.5 代碼檔案與套用啟動過程 307
6.5.6 框架與SDK 312
6.6 對項目內容進行重命名 314
第7章 nib管理 316
7.1 nib編輯器界面概覽 317
7.1.1 文檔大綱 318
7.1.2 畫布 321
7.1.3 查看器與庫 323
7.2 nib載入 324
7.2.1 何時載入nib 325
7.2.2 手工載入nib 326
7.3 連線 328
7.3.1 插座變數 328
7.3.2 nib擁有者 330
7.3.3 自動配置nib 333
7.3.4 誤配置的插座變數 333
7.3.5 刪除插座變數 335
7.3.6 創建插座變數的其他方式 335
7.3.7 插座變數集合 338
7.3.8 動作連線 339
7.3.9 創建動作的其他方式 340
7.3.10 誤配置的動作 342
7.3.11 nib之間的連線——不行! 342
7.4 nib實例的其他配置 343
第8章 文檔 346
8.1 文檔視窗 346
8.2 類文檔頁面 349
8.3 示例代碼 351
8.4 快速幫助 352
8.5 符號 353
8.6 頭檔案 354
8.7 網際網路資源 355
第9章 項目的生命周期 356
9.1 設備架構與條件代碼 356
9.1.1 向後兼容 357
9.1.2 設備類型 359
9.2 版本控制 360
9.3 編輯與代碼導航 362
9.3.1 自動補令 363
9.3.2 代碼片段 364
9.3.3 Fix-it與實時語法檢查 365
9.3.4 導航 366
9.3.5 查找 368
9.4 在模擬器中運行 369
9.5 調試 370
9.5.1 原始調試 370
9.5.2 Xcode調試器 372
9.6 測試 378
9.7 清理 383
9.8 在設備中運行 384
9.8.1 在沒有開發者計畫成員資格的情況下運行 386
9.8.2 獲取開發者計畫成員資格 387
9.8.3 獲取證書 387
9.8.4 獲取開發配置檔案 389
9.8.5 運行套用 390
9.8.6 配置檔案與設備管理 390
9.9 分析 391
9.9.1 儀錶盤 391
9.9.2 Instruments 392
9.10 本地化 394
9.10.1 本地化Info.plist 396
9.10.2 本地化nib檔案 398
9.10.3 本地化代碼字元串 399
9.10.4 使用XML檔案進行本地化 401
9.11 歸檔與發布 403
9.12 Ad Hoc發布 405
9.13 最後的準備 406
9.13.1 套用圖示 407
9.13.2 其他圖示 408
9.13.3 啟動圖片 408
9.13.4 螢幕截圖與視頻預覽 409
9.13.5 屬性列表設定 410
9.14 向App Store提交套用 411
第三部分 Cocoa
第10章 Cocoa類 417
10.1 子類化 417
10.2 類別與擴展 420
10.2.1 Swift如何使用擴展 420
10.2.2 你應該如何使用擴展 421
10.2.3 Cocoa如何使用類別 421
10.3 協定 423
10.3.1 非正式協定 425
10.3.2 可選方法 425
10.4 Foundation類精講 427
10.4.1 常用的結構體與常量 427
10.4.2 NSString及相關類 428
10.4.3 NSDate及相關類 431
10.4.4 NSNumber 433
10.4.5 NSValue 434
10.4.6 NSData 435
10.4.7 相等與比較 435
10.4.8 NSIndexSet 437
10.4.9 NSArray與NSMutableArray 438
10.4.10 NSDictionary與NSMutableDictionary 440
10.4.11 NSSet及相關類 440
10.4.12 NSNull 442
10.4.13 不變與可變 442
10.4.14 屬性列表 443
10.5 訪問器、屬性與鍵值編碼 443
10.5.1 Swift訪問器 445
10.5.2 鍵值編碼 446
10.5.3 鍵值編碼的使用 447
10.5.4 KVC與插座變數 448
10.5.5 鍵路徑 449
10.5.6 數組訪問器 450
10.6 NSObject揭秘 450
第11章 Cocoa事件 453
11.1 為何使用事件 453
11.2 子類化 454
11.3 通知 455
11.3.1 接收通知 456
11.3.2 取消註冊 458
11.3.3 發布通知 459
11.3.4 NSTimer 460
11.4 委託 461
11.4.1 Cocoa委託 461
11.4.2 實現委託 463
11.5 數據源 465
11.6 動作 465
11.7 回響器鏈 468
11.7.1 推遲職責 469
11.7.2 Nil-Targeted動作 470
11.8 鍵值觀測 471
11.9 事件泥潭 475
11.10 延遲執行 477
第12章 記憶體管理 480
12.1 Cocoa記憶體管理的原理 480
12.2 Cocoa記憶體管理的原則 481
12.3 ARC及其作用 482
12.4 Cocoa對象管理記憶體的方式 483
12.5 自動釋放池 484
12.6 實例屬性的記憶體管理 486
12.7 保持循環與弱引用 487
12.8 值得注意的記憶體管理情況 488
12.9 nib載入與記憶體管理 492
12.10 CFTypeRefs的記憶體管理 493
12.11 屬性的記憶體管理策略 495
12.12 調試記憶體管理的錯誤 497
第13章 對象間通信 499
13.1 實例化可見性 500
13.2 關係可見性 502
13.3 全局可見性 503
13.4 通知與KVO 504
13.5 模型-視圖-控制器 505
附錄A C、Objective-C與Swift 507
第一部分 語言
第1章 Swift架構縱覽 11
1.1 基礎 11
1.2 萬物皆對象 12
1.3 對象類型的3種風格 14
1.4 變數 14
1.5 函式 15
1.6 Swift檔案的結構 16
1.7 作用域與生命周期 19
1.8 對象成員 20
1.9 命名空間 20
1.10 模組 21
1.11 實例 22
1.12 為何使用實例 24
1.13 self 26
1.14 隱私 27
1.15 設計 29
1.15.1 對象類型與API 29
1.15.2 實例創建、作用域與生命周期 31
1.15.3 小結 32
第2章 函式 34
2.1 函式參數與返回值 34
2.1.1 Void返回類型與參數 37
2.1.2 函式簽名 38
2.2 外部參數名 38
2.3 重載 41
2.4 默認參數值 42
2.5 可變參數 43
2.6 可忽略參數 44
2.7 可修改參數 44
2.8 函式中的函式 48
2.9 遞歸 49
2.10 將函式作為值 50
2.11 匿名函式 53
2.12 定義與調用 57
2.13 閉包 58
2.13.1 閉包是如何改善代碼的 59
2.13.2 返回函式的函式 61
2.13.3 使用閉包設定捕獲變數 64
2.13.4 使用閉包保存捕獲的環境 64
2.14 柯里化函式 66
第3章 變數與簡單類型 68
3.1 變數作用域與生命周期 68
3.2 變數聲明 69
3.3 計算初始化器 72
3.4 計算變數 73
3.5 setter觀察者 76
3.6 延遲初始化 77
3.7 內建簡單類型 79
3.7.1 Bool 80
3.7.2 數字 81
3.7.3 String 88
3.7.4 Character 93
3.7.5 Range 96
3.7.6 元組 98
3.7.7 Optional 102
第4章 對象類型 114
4.1 對象類型聲明與特性 114
4.1.1 初始化器 115
4.1.2 屬性 122
4.1.3 方法 125
4.1.4 下標 127
4.1.5 嵌套對象類型 128
4.1.6 實例引用 129
4.2 枚舉 131
4.2.1 帶有固定值的Case 132
4.2.2 帶有類型值的Case 133
4.2.3 枚舉初始化器 134
4.2.4 枚舉屬性 136
4.2.5 枚舉方法 137
4.2.6 為何使用枚舉 138
4.3 結構體 139
4.3.1 結構體初始化器、屬性與方法 139
4.3.2 將結構體作為命名空間 140
4.4 類 141
4.4.1 值類型與引用類型 142
4.4.2 子類與父類 146
4.4.3 類初始化器 151
4.4.4 類析構器 159
4.4.5 類屬性與方法 159
4.5 多態 161
4.6 類型轉換 164
4.7 類型引用 168
4.8 協定 172
4.8.1 為何使用協定 174
4.8.2 協定類型測試與轉換 176
4.8.3 聲明協定 177
4.8.4 可選協定成員 178
4.8.5 類協定 180
4.8.6 隱式必備初始化器 180
4.8.7 字面值轉換 182
4.9 泛型 183
4.9.1 泛型聲明 185
4.9.2 類型約束 186
4.9.3 顯式特化 189
4.9.4 關聯類型鏈 190
4.9.5 附加約束 192
4.10 擴展 196
4.10.1 擴展對象類型 196
4.10.2 擴展協定 199
4.10.3 擴展泛型 202
4.11 保護類型 203
4.11.1 AnyObject 203
4.11.2 AnyClass 206
4.11.3 Any 207
4.12 集合類型 208
4.12.1 Array 208
4.12.2 Dictionary 222
4.12.3 Set 227
第5章 流程控制與其他 232
5.1 流程控制 232
5.1.1 分支 233
5.1.2 循環 245
5.1.3 跳轉 250
5.2 運算符 261
5.3 隱私性 264
5.3.1 Private聲明 265
5.3.2 Public聲明 267
5.3.3 隱私性規則 267
5.4 內省 267
5.5 記憶體管理 269
5.5.1 弱引用 270
5.5.2 無主引用 272
5.5.3 匿名函式中的弱引用與無主引用 273
5.5.4 協定類型引用的記憶體管理 275
第二部分 IDE
第6章 Xcode項目剖析 279
6.1 新建項目 279
6.2 項目視窗 281
6.2.1 導航窗格 282
6.2.2 輔助窗格 288
6.2.3 編輯器 289
6.3 項目檔案及其依賴 291
6.4 目標 293
6.4.1 構建階段 294
6.4.2 構建設定 296
6.4.3 配置 297
6.4.4 方案與目標 298
6.5 從項目到運行套用 300
6.5.1 構建設定 303
6.5.2 屬性列表設定 303
6.5.3 nib檔案 304
6.5.4 其他資源 305
6.5.5 代碼檔案與套用啟動過程 307
6.5.6 框架與SDK 312
6.6 對項目內容進行重命名 314
第7章 nib管理 316
7.1 nib編輯器界面概覽 317
7.1.1 文檔大綱 318
7.1.2 畫布 321
7.1.3 查看器與庫 323
7.2 nib載入 324
7.2.1 何時載入nib 325
7.2.2 手工載入nib 326
7.3 連線 328
7.3.1 插座變數 328
7.3.2 nib擁有者 330
7.3.3 自動配置nib 333
7.3.4 誤配置的插座變數 333
7.3.5 刪除插座變數 335
7.3.6 創建插座變數的其他方式 335
7.3.7 插座變數集合 338
7.3.8 動作連線 339
7.3.9 創建動作的其他方式 340
7.3.10 誤配置的動作 342
7.3.11 nib之間的連線——不行! 342
7.4 nib實例的其他配置 343
第8章 文檔 346
8.1 文檔視窗 346
8.2 類文檔頁面 349
8.3 示例代碼 351
8.4 快速幫助 352
8.5 符號 353
8.6 頭檔案 354
8.7 網際網路資源 355
第9章 項目的生命周期 356
9.1 設備架構與條件代碼 356
9.1.1 向後兼容 357
9.1.2 設備類型 359
9.2 版本控制 360
9.3 編輯與代碼導航 362
9.3.1 自動補令 363
9.3.2 代碼片段 364
9.3.3 Fix-it與實時語法檢查 365
9.3.4 導航 366
9.3.5 查找 368
9.4 在模擬器中運行 369
9.5 調試 370
9.5.1 原始調試 370
9.5.2 Xcode調試器 372
9.6 測試 378
9.7 清理 383
9.8 在設備中運行 384
9.8.1 在沒有開發者計畫成員資格的情況下運行 386
9.8.2 獲取開發者計畫成員資格 387
9.8.3 獲取證書 387
9.8.4 獲取開發配置檔案 389
9.8.5 運行套用 390
9.8.6 配置檔案與設備管理 390
9.9 分析 391
9.9.1 儀錶盤 391
9.9.2 Instruments 392
9.10 本地化 394
9.10.1 本地化Info.plist 396
9.10.2 本地化nib檔案 398
9.10.3 本地化代碼字元串 399
9.10.4 使用XML檔案進行本地化 401
9.11 歸檔與發布 403
9.12 Ad Hoc發布 405
9.13 最後的準備 406
9.13.1 套用圖示 407
9.13.2 其他圖示 408
9.13.3 啟動圖片 408
9.13.4 螢幕截圖與視頻預覽 409
9.13.5 屬性列表設定 410
9.14 向App Store提交套用 411
第三部分 Cocoa
第10章 Cocoa類 417
10.1 子類化 417
10.2 類別與擴展 420
10.2.1 Swift如何使用擴展 420
10.2.2 你應該如何使用擴展 421
10.2.3 Cocoa如何使用類別 421
10.3 協定 423
10.3.1 非正式協定 425
10.3.2 可選方法 425
10.4 Foundation類精講 427
10.4.1 常用的結構體與常量 427
10.4.2 NSString及相關類 428
10.4.3 NSDate及相關類 431
10.4.4 NSNumber 433
10.4.5 NSValue 434
10.4.6 NSData 435
10.4.7 相等與比較 435
10.4.8 NSIndexSet 437
10.4.9 NSArray與NSMutableArray 438
10.4.10 NSDictionary與NSMutableDictionary 440
10.4.11 NSSet及相關類 440
10.4.12 NSNull 442
10.4.13 不變與可變 442
10.4.14 屬性列表 443
10.5 訪問器、屬性與鍵值編碼 443
10.5.1 Swift訪問器 445
10.5.2 鍵值編碼 446
10.5.3 鍵值編碼的使用 447
10.5.4 KVC與插座變數 448
10.5.5 鍵路徑 449
10.5.6 數組訪問器 450
10.6 NSObject揭秘 450
第11章 Cocoa事件 453
11.1 為何使用事件 453
11.2 子類化 454
11.3 通知 455
11.3.1 接收通知 456
11.3.2 取消註冊 458
11.3.3 發布通知 459
11.3.4 NSTimer 460
11.4 委託 461
11.4.1 Cocoa委託 461
11.4.2 實現委託 463
11.5 數據源 465
11.6 動作 465
11.7 回響器鏈 468
11.7.1 推遲職責 469
11.7.2 Nil-Targeted動作 470
11.8 鍵值觀測 471
11.9 事件泥潭 475
11.10 延遲執行 477
第12章 記憶體管理 480
12.1 Cocoa記憶體管理的原理 480
12.2 Cocoa記憶體管理的原則 481
12.3 ARC及其作用 482
12.4 Cocoa對象管理記憶體的方式 483
12.5 自動釋放池 484
12.6 實例屬性的記憶體管理 486
12.7 保持循環與弱引用 487
12.8 值得注意的記憶體管理情況 488
12.9 nib載入與記憶體管理 492
12.10 CFTypeRefs的記憶體管理 493
12.11 屬性的記憶體管理策略 495
12.12 調試記憶體管理的錯誤 497
第13章 對象間通信 499
13.1 實例化可見性 500
13.2 關係可見性 502
13.3 全局可見性 503
13.4 通知與KVO 504
13.5 模型-視圖-控制器 505
附錄A C、Objective-C與Swift 507