iOS 性能優化實戰

琿少

  • 出版商: 電子工業
  • 出版日期: 2019-05-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • ISBN: 7121361523
  • ISBN-13: 9787121361524
  • 相關分類: Apple Developer

立即出貨 (庫存 < 4)

買這商品的人也買了...

相關主題

商品描述

所謂性能,無非是一種指標,在軟件開發中,性能指標往往會關註兩個方面:效率和消耗。效率主要是指代碼的執行效率,動畫的流暢度,應用的冷啟動時間和熱啟動時間,網絡通訊的阻塞時間等等。消耗只要是指內存的消耗,有沒有內存泄露,CPU的占用率,耗電與應用程序包尺寸等。本書主要討論在iOS應用性能優化中,有哪些性能指標可能是你需要考慮的。並將向你介紹如何使用工具來分析一款iOS應用的性能問題。並且,也會向讀者介紹在iOS軟件開發過程的更多高級技巧。

作者簡介

張益輝,TicTalk Foundation合夥人,博客筆名琿少,曾就職於唯品會,參與特賣項目《唯品會》、唯品會美妝項目《唯美》、唯品會返利項目《唯享客》。iOS開發、Swift 語言、Objective-C 語言、Java 與JavaScript語言、Android 等相關技術博客370餘篇。任麥子學院iOS金牌講師,良師益友網、51CTO學院、CSND網絡學院簽約講師,開源中國高手問答欄目受邀技術專家,博客訪問量90多萬次。

目錄大綱

第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使用運行時函數替換UILab el的初始化方法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