iOS性能最佳化實戰

iOS性能最佳化實戰

《iOS性能最佳化實戰》,作者:琿少,2019年5月電子工業出版社出版,本書是一線資深工程師5年的工作經驗與總結,書中有近200張圖詳細講解iOS最佳化方法,100多段實用代碼,領會最佳化精髓。

基本介紹

  • 書名:iOS性能最佳化實戰
  • 作者:琿少
  • ISBN:978-7-121-36152-4
  • 頁數:432
  • 定價:99
  • 出版社:電子工業出版社
  • 出版時間:2019-05
  • 裝幀:平裝
  • 開本:16
內容提要,目錄,前言,

內容提要

《iOS性能最佳化實戰》從iOS性能最佳化談起,介紹了開發一款高性能的iOS應用程式所需要關注的技術點,並深入介紹了iOS高階套用相關技巧。
《iOS性能最佳化實戰》主要包括如下幾部分:iOS套用記憶體管理的基本原理,以及記憶體管理的注意事項與檢查記憶體問題的方法;iOS套用的網路開發技能,以及網路調試與數據Mock技巧;iOS應用程式的啟動流程,以及推送與網路電話服務;iOS視圖渲染性能最佳化與動畫技巧;完整的iOS多執行緒高級套用技術;Objective-C語言的動態特性與iOS開發中運行時特性的套用,以及JavaScript腳本在iOS開發中的套用。
《iOS性能最佳化實戰》可以幫助iOS開發工程師、編程愛好者更深入地理解iOS開發原理,更高效地開發出高質量的應用程式。

目錄

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

前言

首先感謝你購買本書作為提高iOS開發技能的學習教程。作為一名最前沿的程式開發者,我非常理解當需要深入學習一門技術卻無從下手時的迷茫與急迫感。因此在編寫本書時,我尤其注意將重點、難點及開發過程中極易被忽視卻十分重要的點突出講解,希望能夠幫助你用最短的學習時間,得到最顯著的提高。
閱讀本書目錄,你會發現,本書不是一本基礎的iOS開發教程,如果你沒有絲毫的iOS開發基礎,那么本書對你來說可能會有難度而且不易理解,如果真是這樣,我建議你先學習iOS基礎開發知識,再來閱讀本書,一定會受益匪淺。
學習一門程式語言、掌握一種程式開發技術會讓你從中獲得極大的樂趣。科技領域的高速發展使得企業和公司需要越來越多的編程技術人員,市場上的編程書籍琳琅滿目,其中的大多數側重於基礎入門與套用實戰,就iOS開發來說,如果你想深入地了解這門技術,那么本書是非常好的選擇。

相關詞條

熱門詞條

聯絡我們