我們的應(yīng)用通常充斥著崩潰,為了方便尋找導(dǎo)致崩潰的原因,蘋果為我們提供了崩潰報(bào)告,每個(gè)安裝了應(yīng)用的手機(jī),在崩潰時(shí)都會產(chǎn)生一個(gè)報(bào)告,我們可以利用合格報(bào)告推斷出導(dǎo)致崩潰的原因。 首...
我們的應(yīng)用通常充斥著崩潰,為了方便尋找導(dǎo)致崩潰的原因,蘋果為我們提供了崩潰報(bào)告,每個(gè)安裝了應(yīng)用的手機(jī),在崩潰時(shí)都會產(chǎn)生一個(gè)報(bào)告,我們可以利用合格報(bào)告推斷出導(dǎo)致崩潰的原因。 首...
協(xié)程又叫用戶級輕量線程,它不需要像線程那樣占用大量系統(tǒng)資源,但卻能像線程那樣并發(fā)地運(yùn)行多個(gè)函數(shù),它是怎樣實(shí)現(xiàn)的呢?讓我們先搞清楚它的實(shí)現(xiàn)細(xì)節(jié),然后再動手自己做一個(gè)。 在CPU...
介紹 Xcode可以直接引入h5的界面,實(shí)現(xiàn)原生界面內(nèi)嵌h5開發(fā)。其實(shí)這里不止iOS可以這樣做,安卓也可以引用同樣的h5界面,實(shí)現(xiàn)界面使用同一份h5代碼。 為什么要寫h5的界...
山雨欲來 “砰砰砰、砰砰砰、砰砰砰” “大師,大師,江湖救急啊” “不知少俠,著急讓老夫出關(guān)所為何事?” “大師之前授與我的iOS性能優(yōu)化(初級)和iOS性能優(yōu)化(中級),我...
屏幕顯示圖像的原理 CRT 的電子槍按照上面方式,從上到下一行行掃描,掃描完成后顯示器就呈現(xiàn)一幀畫面,隨后電子槍回到初始位置繼續(xù)下一次掃描。為了把顯示器的顯示過程和系統(tǒng)的視頻...
今天我們討論的hook方式僅僅是指Method Swizzle,fishhook、Cydia Substrate 等方式不在今天的討論范疇。 hook load方法我們主要面...
開發(fā)小王:我用dispatch_once創(chuàng)建了一個(gè)串行Queue,我的代碼都是在這個(gè)queue中執(zhí)行的,為什么線上還會有線程安全的問題? 看了下,在Common.h頭文件中有...
對于存在于別的動態(tài)庫的函數(shù),程序在運(yùn)行的時(shí)候需要通過動態(tài)鏈接來獲取函數(shù)的調(diào)用地址。在iOS上是通過dyld來實(shí)現(xiàn)的。下面對這個(gè)原理做一下梳理。 以最令人熟悉的NSLog來做例...
一、前言 在介紹動態(tài)庫手動加載方式之前,我們簡單了解下動態(tài)庫,又名共享庫在iOS中是個(gè)特殊的存在,除了系統(tǒng)庫以外,在大部分使用場景下(除了App Extension可以共享)...