ARC做事有它自己的原則,
其中的關鍵在於method的取名。
以上圖為例,
當method名稱為getArtist時,
ARC認為此method回傳的物件有點髒亂,
需要被丟到autorelease pool好好清洗一番。
因此雖然接收的變數artist宣告為__weak,
但此物件還可以繼續存活,
直到autorelease pool將pool裡的物件release。
但當method名稱以alloc, copy, new, init, mutalbeCopy開頭時,
回傳物件的生死將由接收的變數決定。
由於接收的artiest2宣告為__weak,
表明了對回傳的物件沒有興趣。
所以此物件將馬上被release,
結束它短暫又平凡的一生。
沒有留言:
張貼留言