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