2

據我記得我們有類似performSelectorOnMainThread:(和變種)保留的對象,直到方法完成執行「在蘋果的文檔。如果我在後臺線程中創建了對象 - 我應該選擇dispatch_sync(dispatch_get_main_queue)以確保該對象直到選擇執行纔會被釋放我應該保留與GCD dispatch_X(或保留它)的論點

回答

0

關於Cocoa內存管理系統的事情是你永遠不必關心這個問題內存管理是完全本地化的 - 你從不關心其他功能的作用。基本規則是 - 調用者保證在調用該函數時對象參數有效,並且不保證其他任何內容

如果一個函數以某種方式存儲一個對象供以後使用,它必須(通過推導)以某種方式保留它,因爲它不會假定該對象再有效。相反,作爲函數的調用者,您不需要考慮函數的作用或者它是否異步執行某些操作,因爲您無法保證該函數在其被調用後的任何時刻都處於活動狀態。

0

塊,其中GCD派遣捕獲其背景:在這種情況下,這意味着它們保留了一切,他們引用,直到執行:)