"后來,我們就拿到了地球的太空照片噪沙,那是在一顆衛(wèi)星上拍攝的吆视,可以看到地球的完整一天映砖,從日出到日落旦棉。我把照片排成那個(gè)順序矗漾,我想表達(dá)一種連接服爷,一方面是太陽的陰影在地球表面的移動(dòng)杜恰,...
"后來,我們就拿到了地球的太空照片噪沙,那是在一顆衛(wèi)星上拍攝的吆视,可以看到地球的完整一天映砖,從日出到日落旦棉。我把照片排成那個(gè)順序矗漾,我想表達(dá)一種連接服爷,一方面是太陽的陰影在地球表面的移動(dòng)杜恰,...
咋一看,只能了解其定義了一些數(shù)據(jù)存儲(chǔ)的空間嚎于,里面存儲(chǔ)的應(yīng)該是指針掘而,而且這些指針3bit對(duì)齊,似乎跟OC的objc_object指針很類似...
————————————
.align 3 // 表示的應(yīng)該是 2^3 = 8 字節(jié)對(duì)齊吧于购?
??
解讀objc_msgSend引入 眾所周知袍睡,Objective-C動(dòng)態(tài)性的根源在方法的調(diào)用是通過message來實(shí)現(xiàn)的,一次發(fā)生message的過程就是一次方法的調(diào)用過程肋僧。發(fā)送message只需要指定對(duì)...
NSMutableArray *array = [NSMutableArray array];
NSLog(@"array: %p", array);
_objc_autoreleasePoolPrint();
上面的代碼 MRC 下執(zhí)行時(shí)能在自動(dòng)釋放池里看到 array斑胜,ARC 下執(zhí)行時(shí)自動(dòng)釋放池里沒有 array控淡,之所以沒有,是因?yàn)?objc_autoreleaseReturnValue 函數(shù)中 prepareOptimizedReturn 返回了 true止潘,編譯器做了優(yōu)化掺炭,沒有把 array 放入自動(dòng)釋放池。
autorelease 函數(shù)只是把對(duì)象放入自動(dòng)釋放池覆山,自動(dòng)釋放池并不會(huì)持有對(duì)象竹伸,自動(dòng)釋放池的作用延時(shí)釋放,當(dāng)池 pop 時(shí)簇宽,會(huì)循環(huán)把池的對(duì)象做一次 objc_release 釋放操作勋篓。
objc_autoreleaseReturnValue和objc_retainAutoreleasedReturnValue函數(shù)對(duì)ARC的優(yōu)化注:本文在每段代碼中首段標(biāo)有 "//ARC" 意為使用ARC的代碼, "//MRC"則為MRC的代碼 上面是NSMutableArray的類方法魏割,?這樣返回在ARC里面沒有任...
"objc_retainAutoreleasedReturnValue函數(shù)的else分支上要執(zhí)行一次retain" 是為了適配兼容調(diào)用函數(shù)和被調(diào)用函數(shù)之間有一個(gè)是arc編譯另外一個(gè)是mrc編譯的場(chǎng)景
問題分析 我看過很多文章關(guān)于在dispatch_async的block里面使用_weak self, 但是讓我疑惑的是尼桶,以下代碼是否需要必須使用_weak self, 因?yàn)槲?..
前言 ??之前寫過一篇block的文章,參考的源碼是libclosure-38的锯仪,跟libclosure-67有所區(qū)別泵督,且由于之前理解不足文章有些細(xì)小錯(cuò)誤,決定重新寫一篇庶喜。?...
1. __weak使用 1.1 ARC以后引入了__weak的概念來修飾Objective-C對(duì)象,使用這個(gè)關(guān)鍵字修飾的對(duì)象,對(duì)象的引用計(jì)數(shù)不會(huì)+1,這個(gè)關(guān)鍵字和__unsa...