定 價:¥99.00
作 者: | 琿少 |
出版社: | 電子工業(yè)出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787121361524 | 出版時間: | 2019-05-01 | 包裝: | 平裝 |
開本: | 16開 | 頁數(shù): | 432 | 字?jǐn)?shù): |
目 錄
第1章 關(guān)于性能你需要知道的事 1
1.1 衡量應(yīng)用程序性能優(yōu)劣的一些標(biāo)準(zhǔn) 1
1.1.1 代碼的執(zhí)行效率 2
1.1.2 內(nèi)存占用 4
1.1.3 CPU負(fù)擔(dān)與能耗 5
1.1.4 動畫流暢度 7
1.1.5 網(wǎng)絡(luò)緩存 8
1.1.6 應(yīng)用程序啟動時間 9
1.1.7 應(yīng)用程序包尺寸 9
1.2 Xcode斷點(diǎn)與靜態(tài)分析工具 10
1.2.1 添加自定義斷點(diǎn) 10
1.2.2 為自定義斷點(diǎn)添加行為 11
1.2.3 添加全局類型的斷點(diǎn) 13
1.2.4 Xcode的靜態(tài)分析工具 14
1.3 Instruments:性能分析和測試工具 16
1.3.1 Activity Monitor:活動監(jiān)視器 16
1.3.2 Allocations:內(nèi)存跟蹤工具 17
1.3.3 CoreAnimation:核心動畫監(jiān)測工具 19
1.3.4 Counters:儀表計數(shù)器 20
1.3.5 Energy Log:能耗記錄器 21
1.3.6 Leaks:內(nèi)存泄漏檢查工具 22
1.3.7 Network:網(wǎng)絡(luò)連接檢查工具 23
1.3.8 自定義Instruments工具模板 23
1.4 使用LLDB調(diào)試工具 25
1.4.1 使用expression指令進(jìn)行動態(tài)代碼執(zhí)行 25
1.4.2 使用frame指令查看代碼幀信息 27
1.4.3 使用thread相關(guān)指令操作線程 29
1.4.4 其他LLDB常用指令 33
1.5 日志與埋點(diǎn) 34
1.5.1 異常分析 35
1.5.2 使用Bugly異常捕獲工具 41
1.5.3 應(yīng)用程序埋點(diǎn) 43
1.5.4 使用Fabric分析工具 43
第2章 iOS內(nèi)存管理 45
2.1 iOS的內(nèi)存管理模型 45
2.1.1 關(guān)于內(nèi)存消耗與引用計數(shù) 45
2.1.2 MRC內(nèi)存管理 46
2.1.3 關(guān)于ARC 49
2.1.4 屬性修飾符 51
2.1.5 ARC與MRC進(jìn)行混編 53
2.2 自動釋放內(nèi)存 54
2.2.1 關(guān)于autorelease方法 55
2.2.2 自動釋放池 57
2.2.3 系統(tǒng)維護(hù)的自動釋放池 59
2.3 杜絕內(nèi)存泄漏 60
2.3.1 Block與循環(huán)引用 61
2.3.2 代理與循環(huán)引用 63
2.3.3 定時器引起的內(nèi)存泄漏 65
2.4 關(guān)于“僵尸”對象 66
2.4.1 捕獲“僵尸”對象 66
2.4.2 處理“僵尸”對象 68
2.5 CoreFoundation框架中的內(nèi)存管理 71
2.5.1 CoreFoundation中的引用計數(shù) 71
2.5.2 CoreFoundation框架與Foundation框架混用 72
2.6 擴(kuò)展:關(guān)于id與void* 74
2.6.1 關(guān)于id類型 74
2.6.2 關(guān)于void與void* 75
2.6.3 解決最初的問題 76
第3章 應(yīng)用程序網(wǎng)絡(luò)與能耗優(yōu)化 77
3.1 深入iOS網(wǎng)絡(luò)開發(fā)技術(shù) 77
3.1.1 初識NSURLSession 79
3.1.2 NSURLConnection的簡單應(yīng)用 83
3.1.3 請求對象NSURLRequest 85
3.1.4 請求回執(zhí)對象NSURLResponse 87
3.1.5 數(shù)據(jù)緩存對象NSURLCache 88
3.1.6 本地用戶憑證對象NSHTTPCookie 90
3.1.7 使用第三方網(wǎng)絡(luò)診斷庫――LDNetDiagnoService_IOS 92
3.2 iOS網(wǎng)絡(luò)開發(fā)及優(yōu)化秘技 96
3.2.1 使用Charles抓包工具 96
3.2.2 使用Charles進(jìn)行HTTPS抓包 100
3.2.3 使用Charles進(jìn)行網(wǎng)絡(luò)環(huán)境模擬 102
3.2.4 使用Charles添加請求斷點(diǎn) 104
3.2.5 使用Charles進(jìn)行數(shù)據(jù)模擬 106
3.2.6 Charles的請求重寫功能 108
3.2.7 使用Mock.js搭建本地數(shù)據(jù)模擬服務(wù) 110
3.2.8 學(xué)習(xí)使用JSONModel庫 116
3.2.9 屬性自動生成工具 121
3.3 定位與地圖 130
3.3.1 使用定位服務(wù) 130
3.3.2 原生地圖開發(fā) 133
3.3.3 添加大頭針與自定義標(biāo)注 136
3.3.4 添加地圖覆蓋物 138
3.3.5 檢索附近興趣點(diǎn)和導(dǎo)航服務(wù) 140
3.4 定時器應(yīng)用 146
3.4.1 NSTimer的簡單應(yīng)用 146
3.4.2 關(guān)于RunLoop的一些探究 148
3.4.3 中心化管理NSTimer定時器 149
3.4.4 CADisplayLink類的應(yīng)用 153
3.4.5 使用GCD方式的定時器 154
第4章 從應(yīng)用程序啟動說起 156
4.1 應(yīng)用程序的啟動原理 156
4.1.1 深入UIApplication類 156
4.1.2 UIApplication相關(guān)類別介紹 159
4.1.3 關(guān)于UIApplicationDelegate 162
4.2 本地通知與遠(yuǎn)程推送 166
4.2.1 使用本地推送 166
4.2.2 遠(yuǎn)程推送基礎(chǔ) 169
4.2.3 深入理解UserNotification框架 174
4.3 PushKit框架與CallKit框架 189
4.3.1 VoIP與PushKit 190
4.3.2 學(xué)習(xí)使用CallKit框架 192
4.3.3 來電攔截與號碼識別 199
第5章 深入iOS視圖與動畫 204
5.1 關(guān)于視圖控制器 204
5.1.1 UIViewController的生命周期 204
5.1.2 從StoryBoard加載UIViewController對象的傳值陷阱 207
5.1.3 關(guān)于UIViewController的切換 209
5.2 視圖控制器的轉(zhuǎn)場動畫 210
5.2.1 UIViewController的模態(tài)跳轉(zhuǎn)轉(zhuǎn)場 211
5.2.2 導(dǎo)航轉(zhuǎn)場動畫的自定義 218
5.2.3 UITabBarController的轉(zhuǎn)場動畫 221
5.3 列表視圖的性能優(yōu)化 221
5.3.1 UITableView的構(gòu)建原理 221
5.3.2 對UITableView可變行高的優(yōu)化方式 224
5.3.3 關(guān)于高度不定的列表分區(qū)頭、尾視圖 228
5.4 iOS圖像繪制技術(shù) 230
5.4.1 CGPath路徑類 231
5.4.2 理解圖形上下文 238
5.4.3 顏色與色彩空間 252
5.4.4 圖形變換函數(shù) 258
5.4.5 Patterns模型的應(yīng)用 259
5.4.6 繪制梯度漸變視圖 263
5.4.7 進(jìn)行圖像處理 268
5.4.8 關(guān)于層聚合 272
5.5 iOS核心動畫技術(shù) 275
5.5.1 初識CoreAnimation 275
5.5.2 深入理解CALayer 277
5.5.3 幾種常用的CALayer子類 282
5.5.4 CoreAnimation動畫 287
第6章 iOS多線程開發(fā)技術(shù) 293
6.1 使用NSThread進(jìn)行線程管理 293
6.1.1 NSThread中常用類方法 293
6.1.2 NSThread成員方法和屬性的應(yīng)用 295
6.1.3 隱式地使用NSThread進(jìn)行多線程編程 296
6.2 NSOperation與NSOperationQueue的應(yīng)用 296
6.2.1 關(guān)于Operation基類的解析 296
6.2.2 NSBlockOperation類的應(yīng)用 297
6.2.3 NSInvocationOperation類的應(yīng)用 299
6.2.4 操作之間的依賴關(guān)系 300
6.2.5 NSOperationQueue操作隊列的應(yīng)用 301
6.3 學(xué)習(xí)使用GCD 303
6.3.1 GCD的調(diào)度機(jī)制 303
6.3.2 添加任務(wù)到調(diào)度隊列中 304
6.3.3 使用隊列組 305
6.3.4 GCD對循環(huán)任務(wù)的處理 308
6.3.5 GCD中的消息與信號 309
6.3.6 隊列的掛起與開啟 310
6.3.7 使用GCD處理延時任務(wù) 310
6.3.8 數(shù)據(jù)存取的線程安全問題 311
6.3.9 GCD模式的單例 313
6.3.10 關(guān)于GCD中的內(nèi)存管理 314
第7章 iOS運(yùn)行時技術(shù) 315
7.1 動態(tài)的Objective-C語言 315
7.1.1 窺探消息轉(zhuǎn)發(fā)機(jī)制 316
7.1.2 消息傳遞與繼承鏈 318
7.1.3 拯救未知消息的三根救命稻草 320
7.1.4 你真的需要救命稻草嗎 324
7.1.5 發(fā)送消息相關(guān)的幾個函數(shù) 328
7.2 運(yùn)行時方法解析 331
7.2.1 與運(yùn)行時相關(guān)的類操作函數(shù) 332
7.2.2 與運(yùn)行時相關(guān)的實(shí)例對象屬性操作函數(shù) 334
7.2.3 與運(yùn)行時相關(guān)的實(shí)例對象方法操作函數(shù) 337
7.2.4 與運(yùn)行時相關(guān)的協(xié)議操作函數(shù) 340
7.3 運(yùn)行時特性的基本應(yīng)用 341
7.3.1 操作變量的巧妙方法 341
7.3.2 操作方法的巧妙方法 345
7.4 使用運(yùn)行時動態(tài)修改UILabel的默認(rèn)字體 348
7.4.1 使用框架統(tǒng)一處理 348
7.4.2 使用運(yùn)行時函數(shù)替換UILabel的初始化方法 348
7.5 設(shè)置可自動歸檔的數(shù)據(jù)模型基類 352
第8章 JavaScript與Native交互技術(shù)的應(yīng)用 354
8.1 JavaScriptCore框架詳解 354
8.1.1 JavaScriptCore框架中的幾個核心類 355
8.1.2 在Native中運(yùn)行JavaScript腳本代碼 356
8.1.3 在JavaScript腳本中調(diào)用Objective-C Native方法 358
8.1.4 深入JSContext類 359
8.1.5 深入JSValue類 360
8.1.6 Objective-C與JavaScript復(fù)雜對象的映射 365
8.1.7 C語言風(fēng)格的API 366
8.1.8 設(shè)計Hybird App框架 371
8.2 WebKit框架的應(yīng)用 377
8.2.1 WebKit框架概覽 377
8.2.2 使用WKWebViewConfiguration對WebView進(jìn)行配置 379
8.2.3 WKWebView中的屬性和方法解析 382
8.2.4 WKWebView中的JavaScript與Native交互 384
8.2.5 WKNavigationDelegate協(xié)議中的方法解析 385
8.2.6 WKUIDelegate協(xié)議中的方法解析 388
第9章 iOS擴(kuò)展開發(fā) 390
9.1 Today擴(kuò)展的應(yīng)用 390
9.1.1 創(chuàng)建Today擴(kuò)展程序 391
9.1.2 Today擴(kuò)展與宿主應(yīng)用程序進(jìn)行數(shù)據(jù)交互 393
9.2 分享擴(kuò)展的應(yīng)用 396
9.3 照片編輯擴(kuò)展 399
9.4 自定義鍵盤擴(kuò)展 400
9.4.1 了解UIInputViewController類 400
9.4.2 創(chuàng)建自定義的數(shù)字輸入鍵盤 401
9.5 iMessage擴(kuò)展的應(yīng)用 404
9.5.1 開發(fā)獨(dú)立的表情包 404
9.5.2 開發(fā)寄宿于宿主應(yīng)用程序的表情包擴(kuò)展 406
9.5.3 開發(fā)iMessage App 407
9.5.4 對開發(fā)iMessage App的幾點(diǎn)建議 418