什么是LLVM LLVM項(xiàng)目是模塊化、可重用的編譯器以及工具鏈技術(shù)的集合。 美國(guó)計(jì)算機(jī)協(xié)會(huì) (ACM) 將其2012 年軟件系統(tǒng)獎(jiǎng)項(xiàng)頒給了LLVM,之前曾經(jīng)獲得此獎(jiǎng)項(xiàng)的軟件和...
什么是LLVM LLVM項(xiàng)目是模塊化、可重用的編譯器以及工具鏈技術(shù)的集合。 美國(guó)計(jì)算機(jī)協(xié)會(huì) (ACM) 將其2012 年軟件系統(tǒng)獎(jiǎng)項(xiàng)頒給了LLVM,之前曾經(jīng)獲得此獎(jiǎng)項(xiàng)的軟件和...
背景 包大小優(yōu)化是項(xiàng)目開發(fā)中不可避免會(huì)遇到的,網(wǎng)上關(guān)于包大小優(yōu)化的文章很多,每篇文章說的都不盡相同,筆者曾經(jīng)根據(jù)網(wǎng)上的文章做過包大小優(yōu)化,但效果不盡人意;因此筆者想根據(jù)已有的...
原文地址我們知道,HTTP請(qǐng)求都是明文傳輸?shù)模^的明文指的是沒有經(jīng)過加密的信息,如果HTTP請(qǐng)求被黑客攔截,并且里面含有銀行卡密碼等敏感數(shù)據(jù)的話,會(huì)非常危險(xiǎn)。為了解決這個(gè)問...
和你有一樣的觀點(diǎn),創(chuàng)建一個(gè)UIView對(duì)象同時(shí)需要?jiǎng)?chuàng)建響應(yīng)者相關(guān)的對(duì)象和圖層渲染相關(guān)的對(duì)象,任務(wù)量龐大,毫無(wú)疑問像上面我們自己創(chuàng)建出來(lái)的UIView對(duì)象是直接被release的,未能及時(shí)釋放的是系統(tǒng)創(chuàng)建的一些相關(guān)聯(lián)的對(duì)象,并且是autorelease的;
那為何套上一個(gè)autoreleasepool還是不行呢,猜測(cè)是系統(tǒng)創(chuàng)建出來(lái)的autorelease對(duì)象超出了我們手動(dòng)創(chuàng)建的autoreleasepool的作用域
搞懂Objective-C中的autorelease前言 本文是上一篇:搞懂Objective-C中的ARC[http://www.itdecent.cn/p/ed84101e0efe]的延伸和補(bǔ)充 上一篇討論了下面幾個(gè)問題...
@夜涼聽風(fēng)雨 initWithString定義在NSString頭文件中,當(dāng)用NSString對(duì)象調(diào)用時(shí)候會(huì)被編譯器優(yōu)化為@“”字面量的方式創(chuàng)建,并且編譯器會(huì)提示這樣做是無(wú)效的,當(dāng)用NSString子類調(diào)用的時(shí)候會(huì)有不同,比如可變字符串,這個(gè)跟xcode版本無(wú)關(guān),是編譯器層面的優(yōu)化
搞懂Objective-C中的ARC寫這篇文章的背景 前段時(shí)間招人,面試了一個(gè)多月,有關(guān)內(nèi)存的基礎(chǔ)問題,能完全答出來(lái)的竟無(wú)一人,回答出百分之80的人也寥寥無(wú)幾,于是決定寫這篇文章,簡(jiǎn)單業(yè)務(wù)流水線道友們一般都能寫...
@神劍若水哥 嗯,這個(gè)宏定義用了DISPATCH_EXPECT,確實(shí)是極有可能是-1的意思,原因是block執(zhí)行完畢后內(nèi)部把其值置為-1的,所以下次執(zhí)行直接跳過,文章里面說的0是初始時(shí)候,即單例block還沒有執(zhí)行過的時(shí)候
dispatch_once_t詳解概覽 定義在once.h中,整個(gè)api很少,實(shí)現(xiàn)直接內(nèi)聯(lián)在頭文件,如下 如上就是我們常用的dispatch_once,通過block實(shí)現(xiàn),我們調(diào)用的dispatch_once...
意圖:定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪一個(gè)類,從而將一個(gè)類的實(shí)例化延遲到其子類適用范圍:對(duì)象創(chuàng)建接口統(tǒng)一化,實(shí)例化職責(zé)子類化、局部化 缺點(diǎn):通常客戶端只關(guān)心需要...
構(gòu)造器模式(builder) 意圖:將一個(gè)復(fù)雜對(duì)象的構(gòu)建與表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示適用范圍:創(chuàng)建復(fù)雜對(duì)象的算法獨(dú)立于對(duì)象的組成部分和裝配方式 實(shí)踐-富文...
意圖:提供一個(gè)接口,用來(lái)創(chuàng)建一組相關(guān)或者相互依賴的對(duì)象,而無(wú)需指定他們的具體類適用范圍:提供一個(gè)產(chǎn)品類庫(kù),顯示它們的接口,隱藏具體實(shí)現(xiàn),使系統(tǒng)獨(dú)立于產(chǎn)品的創(chuàng)建、組合、表示 缺...
iOS MVC中的設(shè)計(jì)模式 MVC是一種用戶界面架構(gòu)模式,同樣的MVVM、MVP等都是MVC的變種,iOS平臺(tái)中用UIViewController來(lái)描述頁(yè)面,內(nèi)嵌一個(gè)UIVi...
之前做過App的啟動(dòng)優(yōu)化,遇到了+load優(yōu)化的問題,后來(lái)想一想除了initializers代替+load還有沒有什么好的方法,然后就搜到了運(yùn)用編譯屬性__attribute...
先看錯(cuò)誤信息 *** Assertion failure in UITraitCollection * _Nonnull _UIGetCurrentFallbackTrait...
視頻編輯 最近項(xiàng)目一直在做這個(gè),對(duì)標(biāo)是抖音,剪影,微視以及b站的必剪。陸陸續(xù)續(xù)看了不少項(xiàng)目,按開發(fā)歷程記錄如下 1.https://github.com/shaopx/Vid...
把單個(gè)靜態(tài)庫(kù)做成動(dòng)態(tài)庫(kù)包體積肯定會(huì)變大,你的理解是對(duì)的;盡量做成靜態(tài)庫(kù)合并到主工程,這個(gè)理解也是沒問題的;現(xiàn)實(shí)中多個(gè)動(dòng)態(tài)庫(kù)同時(shí)引用了一份靜態(tài)庫(kù)的場(chǎng)景,結(jié)果會(huì)不一樣,第四條的描述解釋了為什么,可以實(shí)操下
iOS編譯過程背景 隨著需求爆發(fā),代碼和圖片資源越來(lái)越多,包體積越來(lái)越大,用戶下載成本越來(lái)越高,瘦包迫在眉睫,要想瘦包,就需要知道包由何組成,每個(gè)組成部分又是怎么來(lái)的,這就必須了解編譯過程...
寫在前面 本文是繼iOS編譯過程[http://www.itdecent.cn/p/9a3204f1772d]、iOS啟動(dòng)過程[https://www.jianshu.co...
block是什么 如上我們寫一個(gè)簡(jiǎn)單的block,然后在最后一行打上斷點(diǎn),用xcode查看對(duì)象繼承鏈和對(duì)象結(jié)構(gòu),打印如下 可見這個(gè)block是一個(gè)__NSGlobalBloc...
軟件是何以監(jiān)聽到時(shí)鐘的 硬件時(shí)鐘生成信號(hào),按照固定頻率發(fā)出信號(hào),操作系統(tǒng)接收到時(shí)鐘信號(hào)之后將其轉(zhuǎn)換為時(shí)鐘計(jì)數(shù),然后分發(fā)給活躍的App進(jìn)程,進(jìn)程再分發(fā)給注冊(cè)時(shí)間信號(hào)的線程 看下...
概覽 定義在once.h中,整個(gè)api很少,實(shí)現(xiàn)直接內(nèi)聯(lián)在頭文件,如下 如上就是我們常用的dispatch_once,通過block實(shí)現(xiàn),我們調(diào)用的dispatch_once...
定義在semaphore.h中,一共三個(gè)api 創(chuàng)建信號(hào)量 信號(hào)量-1 信號(hào)量+1 原理:調(diào)用dispatch_semaphore_wait之后信號(hào)量-1,信號(hào)量大于等于0繼...
概覽 定義在group.h中,api較少,只有創(chuàng)建、提交、阻塞、通知組 創(chuàng)建組 在組中異步提交block到隊(duì)列 在組中異步提交c函數(shù)指針到隊(duì)列 阻塞當(dāng)前線程直到一組任務(wù)執(zhí)行完...