原创 iOS開發 - NSHashTable與Runloop所造成的強引用問題

文章目錄概述Runloop Observer的問題AutoreleasePool界面更新問題分析擴展 概述 首先,我來描述一下這個問題,NSHashTable 是OC中用於弱引用對象的NSMutableSet 類型,在項目使用中,

原创 iOS開發 - Runloop的mode是如何切換的

文章目錄問題探索Runloop的mode是如何切換的mode切換時會退出嗎? 問題 Runloop的mode是如何切換的? Runloop的mode切換時,上一個mode是需要退出嗎? 探索 Runloop的mode是如何切換

原创 iOS開發 - OCLint自定義規則的編譯與Xcode調試

文章目錄OCLint的編譯自定義規則rule 添加Xcode工程創建更新dylibXcode調試 OCLint的編譯 基於版本 oclint version 0.15 OCLint 需要自定義規則的話需要自己編譯,如果是簡單的使用

原创 iOS開發-水印視圖的簡單製作

文章目錄使用CoreGraphic繪製 需求要對某個視圖進行水印遮罩效果,如果所有控件都需要,你可以考慮分類。 我這裏使用 UIView ,你可以使用 CALayer 直接繪製。 使用CoreGraphic繪製 NSAttrib

原创 iOS開發-常見的崩潰信息

文章目錄崩潰信息構成Exception信息常見的崩潰問題額外的診斷信息 崩潰信息構成 常見的崩潰日誌的頭部信息如下: Incident Identifier: B6FD1E8E-B39F-430B-ADDE-FC3A45ED368

原创 iOS開發-App電量消耗以及CPU佔用

文章目錄如何獲取電量消耗UIDevice 獲取IOKit電量分析電量優化優化CPU優化I/O操作 如何獲取電量消耗 UIDevice 獲取 - (float)batteryValue { [UIDevice current

原创 iOS開發-APP組件模塊化的理解

文章目錄模塊化的意義模塊化的粒度組件組件化方案MGJRouter 的路由映射CTMediator 中間者Category的編寫 模塊化的意義 當項目大到一定程度,開發人員也多,所有的代碼都集中到一個倉庫,提交修改都要等其他人提交完

原创 iOS開發-fishhook交換NSLog函數實現

文章目錄fishhookhook原理hook找到NSLog的地址hook後的地址 fishhook https://github.com/facebook/fishhook fishhook是一個facebook的開源項目。 通過

原创 iOS開發-main函數之前app做了哪些事

文章目錄main之前1.加載可執行文件(App 的`.o `文件的集合)2.加載動態鏈接庫,進行 rebase 指針調整和 bind 符號綁定;3.Objc 運行時的初始處理,包括 Objc 相關類的註冊、category 註冊、

原创 iOS開發-代碼分析工具之Clang Static Analyzer

文章目錄簡介使用方法 簡介 Clang Static Analyzer是一款靜態代碼掃描工具,專門用於針對C,C++和Objective-C的程序進行分析。已經被Xcode集成,可以直接使用Xcode進行靜態代碼掃描分析,也可以單

原创 iOS開發 - method swizzle方式的選擇

文章目錄1 method swizzle方式的選擇1.1 錯誤的swizzle方式1.2 正確的swizzle方式1.3 案例 1 method swizzle方式的選擇 1.1 錯誤的swizzle方式 根據 right-way

原创 iOS開發-NSMapTable NSHashTable NSPointerArray的使用

文章目錄NSMapTableNSDictionary的侷限性NSMapTable優勢配置參數 OptionsMemory OptionARC下MRC下Personality optionsUsage快捷生成自定義配置NSHashT

原创 音視頻開發-H264數據組成

文章目錄H264數據構成 NAL起始碼、結束碼網絡傳輸結構 NALUNAL HeaderNALU順序 H264 H264結構中,一個視頻圖像編碼後的數據叫做一幀,一幀由一個片(slice)或多個片組成,一個片由一個或多個宏塊(MB

原创 iOS開發-全量日誌捕獲CocoaLumberjack

文章目錄前言日誌重定向Lumberjack組成Capture 捕捉Logger 輸出message and formatter 消息以及格式化ASL 日誌系統TTY 控制檯輸出os_log 新日誌系統file logger 文件輸

原创 iOS開發-代碼分析OCLint工具

文章目錄簡介OCLint可以發現的問題使用安裝創建所需要的文件調用分析指令Pod等三方庫的過濾 簡介 OCLint是一個 靜態代碼分析 工具,通過檢查C、c++和Objective-C 代碼並尋找潛在的問題. OCLint 就是一