執行此代碼:爲什麼setFrame會增加圖層的引用計數?
mainLyr = [[CALayer layer] retain];
[mainLyr setFrame:CGRectMake(0.0,0.0,23.0,23.0)];
的調試器,我發現retain
後的mainLyr
引用計數爲2。這是正確的。
但是setFrame
之後,引用計數增加到3個。爲什麼?以及如何確定一種方法是增加還是減少引用計數(在參考手冊中找不到)。
執行此代碼:爲什麼setFrame會增加圖層的引用計數?
mainLyr = [[CALayer layer] retain];
[mainLyr setFrame:CGRectMake(0.0,0.0,23.0,23.0)];
的調試器,我發現retain
後的mainLyr
引用計數爲2。這是正確的。
但是setFrame
之後,引用計數增加到3個。爲什麼?以及如何確定一種方法是增加還是減少引用計數(在參考手冊中找不到)。
正如在stackoverflow上多次說過的那樣,不要依賴於你的內存管理的refcount。按照memory management rules,你會做得很好。
格雷厄姆是正確的,但它增加引用計數的原因是你在這裏使用核心動畫;一個圖層的框架變化是動畫的,在動畫過程中,目標對象被保留。在動畫持續時間(默認0.25秒,我相信)後,您的參考計數應該回落1。