顯示具有 iOS ARC 標籤的文章。 顯示所有文章
顯示具有 iOS ARC 標籤的文章。 顯示所有文章

2013年3月30日 星期六

ARC的核心精神,其實就是關心!



今天的App開發課程裡,介紹了iOS App開發裡最困難的物件記憶體管理部分。 今天過後一切就輕鬆多了,希望大家都可以多多練習,領會記憶體管理的奧義。其實現在有了ARC的協助後,記憶體管理已經簡單許多,現在我們不需要是數學天才,不用為了計算retainCount而費思量掉頭髮,只要去思考到底這個物件還沒有地方使用到,還有沒有變數指到它。簡單的說,就是還有沒有人關心,在乎這個物件。就好像圖片裡所表達的,只要有人還關心狗狗,狗狗就不會死亡。但是一旦沒有人關心牠了,沒有了主人的狗狗,也就只好傷心地死去了。



2012年3月19日 星期一

不愛ARC的舊時代檔案

很多時候,
我們會遇到前人寫的程式碼,
他們於沒有ARC的艱困環境,
費盡千辛萬苦完成。
當我們將這些檔案加入ARC專案時,
若想保險起見,
完全不更動這些舊檔案。
只要於target的Build Phases頁面,
於Compile Sources區塊,
將不支援ARC檔案的Compiler Flags設為
-fno-objc-arc。




2012年3月17日 星期六

ARC下不可不慎的method取名



ARC做事有它自己的原則,
其中的關鍵在於method的取名。

以上圖為例,
當method名稱為getArtist時,
ARC認為此method回傳的物件有點髒亂,
需要被丟到autorelease pool好好清洗一番。
因此雖然接收的變數artist宣告為__weak,
但此物件還可以繼續存活,
直到autorelease pool將pool裡的物件release。

但當method名稱以alloc, copy,  new, init, mutalbeCopy開頭時,
回傳物件的生死將由接收的變數決定。
由於接收的artiest2宣告為__weak,
表明了對回傳的物件沒有興趣。
所以此物件將馬上被release,
結束它短暫又平凡的一生。