一、runloop 簡介 RunLoop是通過內(nèi)部維護(hù)的 事件循環(huán)(Event Loop) 來對(duì) 事件/消息 進(jìn)行管理的一個(gè)對(duì)象。 沒有消息處理時(shí),休眠已避免資源占用,由用戶...
一、runloop 簡介 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)釋放池簡介 對(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 簡介 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.reibang.com/p/1b2202ecb964] 分析了函數(shù)姿搜、隊(duì)列的創(chuàng)建寡润、以及同步和異步函數(shù)的調(diào)用流程。那么有以...
一梭纹、GCD 簡介 1.1 GCD GCD(Grand Central Dispatch)本質(zhì)是 將任務(wù)添加到隊(duì)列,并且指定執(zhí)行任務(wù)的函數(shù)致份。 GCD是純C語言實(shí)現(xiàn)变抽,提供了非常強(qiáng)...
一、自定義kvo 在上篇文章 kvo原理分析[http://www.reibang.com/u/a569f5906a12] 中分析了系統(tǒng)kvo原來雇锡,在這個(gè)章節(jié)將實(shí)現(xiàn)一個(gè)簡單...
一逛钻、kvo簡介 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é)下: 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 -...
上篇文章分析了 _objc_init與read_images[http://www.reibang.com/p/a1b6e75d6ff8] 的邏輯笆凌,最后定位到了類的初始化是...