一、runloop 簡(jiǎn)介 RunLoop是通過內(nèi)部維護(hù)的 事件循環(huán)(Event Loop) 來對(duì) 事件/消息 進(jìn)行管理的一個(gè)對(duì)象。 沒有消息處理時(shí),休眠已避免資源占用,由用戶...
一、NSTimer 使用 1.1 使用問題 對(duì)于上面使用timerWithTimeInterval方式創(chuàng)建的timer需要主動(dòng)調(diào)用NSRunLoop的addTimer觸發(fā)計(jì)時(shí)...
一、自動(dòng)釋放池簡(jiǎn)介 對(duì)于autoreleasepool是怎么實(shí)現(xiàn)的呢?直接xcrun查看下對(duì)應(yīng)的c++實(shí)現(xiàn): 可以看到@autoreleasepool被轉(zhuǎn)換成了__AtAut...
ARC是LLVM和Runtime配合的結(jié)果。 ARC中禁止手動(dòng)調(diào)用retain/release/retainCount/dealloc ARC新加了weak、strong屬性...
一、內(nèi)存布局 1.1 內(nèi)存分區(qū) 棧區(qū):存儲(chǔ)函數(shù)、方法、指針、局部變量、參數(shù)等(訪問速度快,通過寄存器訪問),當(dāng)局部變量的作用域被執(zhí)行完畢之后,這個(gè)局部變量就會(huì)被系統(tǒng)立即回收。...
一、block 簡(jiǎn)介 1.1 block 分類 NSGlobalBlock:位于全局區(qū)。在 Block內(nèi)部不使用外部變量,或者只使用靜態(tài)變量和全局變量。 NSMallocBl...
一、鎖的分類 在分析其它鎖之前,需要先區(qū)分清楚鎖的區(qū)別,基本的鎖包括了二類:互斥鎖 和 自旋鎖。 1.1 自旋鎖 自旋鎖:線程反復(fù)檢查鎖變量是否可用。由于線程在這一過程中保持...
一、性能分析 網(wǎng)上很多對(duì)比八大鎖性能的文章,時(shí)間大部分比較早。蘋果對(duì)某些鎖內(nèi)部進(jìn)行了優(yōu)化。這篇文章找中會(huì)以10萬次數(shù)據(jù)做對(duì)比對(duì)主流鎖性能進(jìn)行分析。 1.1 調(diào)用情況模擬 OS...
一、柵欄函數(shù) CPU的亂序執(zhí)行能力讓我們對(duì)多線程的安全保障的努力變得異常困難。因此要保證線程安全,阻止CPU換序是必需的。遺憾的是,現(xiàn)在并不存在可移植的阻止換序的方法。通常情...
上篇文章 GCD底層分析(一)[http://www.itdecent.cn/p/1b2202ecb964] 分析了函數(shù)、隊(duì)列的創(chuàng)建、以及同步和異步函數(shù)的調(diào)用流程。那么有以...
一、GCD 簡(jiǎn)介 1.1 GCD GCD(Grand Central Dispatch)本質(zhì)是 將任務(wù)添加到隊(duì)列,并且指定執(zhí)行任務(wù)的函數(shù)。 GCD是純C語言實(shí)現(xiàn),提供了非常強(qiáng)...
一、自定義kvo 在上篇文章 kvo原理分析[http://www.itdecent.cn/u/a569f5906a12] 中分析了系統(tǒng)kvo原來,在這個(gè)章節(jié)將實(shí)現(xiàn)一個(gè)簡(jiǎn)單...
一、kvo簡(jiǎn)介 Key-Value Observing Programming Guide[https://developer.apple.com/library/archi...
一、kvc基本用法 有如下定義: 1.1 一般setter以及成員變量訪問 1.2 kvc間接訪問 1.3 kvc集合類型 1.3.1 數(shù)組 對(duì)于如下集合類型數(shù)據(jù): 修改方式...
一、類擴(kuò)展分析 1.1 category 與 extension category和extension開發(fā)中經(jīng)常遇到,他們的區(qū)別對(duì)比簡(jiǎn)單總結(jié)下: category(類別、分類...
xcrun也是調(diào)用的clang,編譯出來的文件大小本質(zhì)上與使不使用xcrun沒有關(guān)系,與編譯的命令有關(guān)。在我文章中的例子中xcrun限制了平臺(tái)和架構(gòu)所以就小很多了。檢查下你clang和xcrun中使用的命令是否一致,如果限制條件一樣那么大小一樣就正常。
OC 對(duì)象、位域、isa一、對(duì)象的本質(zhì) 1.1 clang 1.1.1clang 概述 Clang是一個(gè)C語言、C++、Objective-C語言的輕量級(jí)編譯器。源代碼發(fā)布于BSD協(xié)議下。 Clan...
根據(jù)上篇文章的分析,分類的加載有兩條線路: methodizeClass -> attachToClass -> attachCategories load_images -...