SDWebImage 相信對大多數(shù)開發(fā)者來說,都是一個不陌生的名字。它除了幫助我們讀取網(wǎng)絡(luò)圖片,還會處理這些圖片的緩存。它的緩存機制到底是什么樣的呢,讓我給跟大家嘮叨嘮叨,希...
SDWebImage 相信對大多數(shù)開發(fā)者來說,都是一個不陌生的名字。它除了幫助我們讀取網(wǎng)絡(luò)圖片,還會處理這些圖片的緩存。它的緩存機制到底是什么樣的呢,讓我給跟大家嘮叨嘮叨,希...
一、背景 最近Blurrr新版本需求出來了,需要iOS客戶端可以保存帶Alpha通道視頻。 那什么是帶Alpha通道的視頻呢?舉個栗子: 在視頻編輯中,我們常常會將文字增加各...
KVC 全名:Key-value coding,中文簡直編碼。蘋果對其定義如下: Key-value coding is a mechanism enabled by the...
了解Runtime的同學(xué)應(yīng)該都聽說過或者使用過Method-Swizzling,今天我們就來一起了解下Method-Swizzling的使用以及坑點。 一、Method-Sw...
上一篇中,我們分析了dyld,最后說到會調(diào)用_objc_init函數(shù),那_objc_init是干嘛的呢? 一、_objc_init 直接源碼中搜索_objc_init,我們可...
一、背景知識 1.靜態(tài)庫和動態(tài)庫 1.1.庫 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進制代碼,加上頭文件就可以供別人使用。什么時候我們會用到庫呢? 一...
面試的時候,面試官經(jīng)常會問?如果調(diào)用的方法找不到時,在奔潰之前系統(tǒng)會給我們?nèi)螜C會去挽救,避免APP直接崩潰。這三次機會分別是什么?他們的順序和流程是怎樣的?今天我們就來分析...
上一篇我們分析了objc_msgSend的快速查找方法的流程,我們調(diào)用方法實際上就是發(fā)送消息,然后首先會到cache中進行查找,也即是快速查找。objc_msgSend 通過...
在iOS開發(fā)中,我們常常會調(diào)用各種方法,既包括對象方法也包括類方法,那我們方法調(diào)用內(nèi)部到底是如何實現(xiàn)的呢?我們今天就來一起探索一下。 一、objc_msgSend和objc_...
前面我們探索類的時候,了解類的結(jié)構(gòu)。并且有看到objc_class中包含cache屬性是用來做方法緩存的,其是一個cache_t結(jié)構(gòu)體,那cache_t內(nèi)部又是什么樣的?是如...
這篇我們接著分析類。在iOS開發(fā)中我們經(jīng)常會使用到實例方法和類方法。那實例方法和對象方法是存放在哪里的呢?今天,我們就來一探究竟。 一、屬性、成員變量、實例變量 同樣使用LP...
本篇文章我們會繼續(xù)探索iOS底層非常重要的內(nèi)容--類。 一、類的關(guān)系分析 我們創(chuàng)建兩個類:LPPerson和LPStudent。LPPerson繼承于NSObject,LPS...
在上一邊文章中,我們在簡單介紹內(nèi)存對齊,今天我們更加深入一點: 一、獲取內(nèi)存大小的三種方式 先看下面這段代碼: 看一下打印結(jié)果: 這三種方式是干嘛的?為什么獲取的結(jié)果是這樣的...
我們平常開發(fā)中,我們在創(chuàng)建對象時,一般都是用這樣: 那大家有想過,為什么必須要這樣創(chuàng)建才行?alloc和init以及new到底干了什么?今天我們就來探索下 一、準(zhǔn)備工作 1、...
一、What is Metal? 在 WWDC 2014 上,Apple為游戲開發(fā)者推出了新的平臺技術(shù) Metal,該技術(shù)能夠為 3D 圖像提高 10 倍的渲染性能,并支持大...
這篇文章我們繼續(xù)研究濾鏡實現(xiàn),主要實現(xiàn)的濾鏡大家應(yīng)該在抖音系中有見到過,ok,話不多說,直接開始吧! 一、縮放濾鏡 1、效果: 2、著色器代碼 這里我們的縮放采用的是在頂點著...
上一篇文章中主要講了分屏濾鏡,這篇我們了解一下灰度濾鏡和馬賽克濾鏡,其中馬賽克濾鏡分別用正方形、六邊形和三角形實現(xiàn)。因為我們只是修改濾鏡效果,所以UI邏輯和GLKit可以直接...
分屏濾鏡在現(xiàn)在的短視頻中十分常見,今天我們就使用OpenGL ES來實現(xiàn)分屏濾鏡的效果。 一、實現(xiàn)結(jié)果 二、分屏原理: 既然是濾鏡效果,那肯定就得用到著色器來實現(xiàn)了,分屏效果...