【原創(chuàng)博文,轉(zhuǎn)載請(qǐng)注明出處!】準(zhǔn)備學(xué)習(xí)下Shell命令,俗話說(shuō)“好記性不如爛筆頭”,做點(diǎn)筆記方便以后查找。詳細(xì)學(xué)習(xí)途徑請(qǐng)移步 --> Shell菜鳥(niǎo)教程 (一) Shell環(huán)...
引言 本來(lái)“一天一點(diǎn)xib”系列就九篇文章,但在留言中有一個(gè)朋友提出了兩點(diǎn)疑問(wèn): 1.為什么獲得重用cell的時(shí)候用的是dequeueReusableCellWithIden...
原文鏈接 不管是應(yīng)用秒變幻燈片,還是啟動(dòng)過(guò)久被殺,基本都是開(kāi)發(fā)者必經(jīng)的體驗(yàn)。就像沒(méi)人希望堵車(chē)一樣,卡頓永遠(yuǎn)是不受用戶(hù)歡迎的,所以如何發(fā)現(xiàn)卡頓是開(kāi)發(fā)者需要直面的難題。雖然導(dǎo)致卡...
__block修飾符的內(nèi)存管理 當(dāng)block在棧上時(shí),并不會(huì)對(duì)__block變量產(chǎn)生強(qiáng)引用 當(dāng)__block修飾指針變量時(shí),會(huì)在成的__Block_byref_xxx_0結(jié)構(gòu)...
block的類(lèi)型 block有3種類(lèi)型,可以通過(guò)調(diào)用class方法或者isa指針查看具體類(lèi)型,最終都是繼承自NSBlock類(lèi)型 __NSGlobalBlock__ (_NSC...
block的變量捕獲(capture) 為了保證block內(nèi)部能夠正常訪問(wèn)外部的變量,block有個(gè)變量捕獲機(jī)制 當(dāng)block發(fā)生值捕獲時(shí),底層的block結(jié)構(gòu)體會(huì)生成相對(duì)應(yīng)...
Block的本質(zhì) block本質(zhì)上也是一個(gè)OC對(duì)象,它內(nèi)部也有個(gè)isa指針 以上OC代碼生成的C++代碼為: 其中的生成的C++結(jié)構(gòu)體分別是: 代碼塊生成為函數(shù) block最...
KVO 是 Objective-C 對(duì)觀察者模式的實(shí)現(xiàn)。也是 Cocoa Binding 的基礎(chǔ)。當(dāng)被觀察對(duì)象的某個(gè)屬性發(fā)生更改時(shí),觀察者對(duì)象會(huì)獲得通知。 Apple 的文檔...
一個(gè)objc對(duì)象如何進(jìn)行內(nèi)存布局? 所有父類(lèi)的成員變量和自己的成員變量都會(huì)存放在該對(duì)象所對(duì)應(yīng)的存儲(chǔ)空間中. 根對(duì)象就是NSObject,它的superclass指針指向nil...
OC中的Category(三) OC中+initialize函數(shù)加載和調(diào)用 OC對(duì)象是在查找方法時(shí)判斷自己有沒(méi)有初始化,如果沒(méi)有就會(huì)調(diào)用初始化方法,在調(diào)用自己的初始化方法之前...
OC中的Category(二) +load函數(shù)加載和調(diào)用 +load方法會(huì)在runtime加載類(lèi)、分類(lèi)時(shí)調(diào)用 每個(gè)類(lèi)、分類(lèi)的+load,在程序運(yùn)行過(guò)程中只調(diào)用一次 調(diào)用順序:...
在OC中給一個(gè)類(lèi)添加分類(lèi)后,程序在編譯之后生成的底層結(jié)構(gòu)是struct category_t,里面存儲(chǔ)著分類(lèi)的name(類(lèi)名)、 instanceMethods(對(duì)象方法)、...