如果線程A將對象的引用發送給線程B,例如使用performSelector:onThread:withObject:waitUntilDone
,內存管理應該如何進行?應該調用線程alloc
的對象和被調用線程release
嗎?線程間通信期間的內存管理職責
編輯:
事實證明,performSelector:onThread:withObject:waitUntilDone
保留的對象,直到選擇,這將在其他線程的run loop被調用,用它做。所以調用線程應該分配,然後調用performSelector,然後釋放。
如何在調用線程和分配線程中知道被調用的線程何時完成對象,以便它可以安全地釋放它? – apalopohapa 2010-08-31 02:02:58
你必須有某種線程間信號。通常情況下,您仍然希望擁有這個... – easel 2010-08-31 02:15:18
如果通過某種隊列而不是直接發送信號的方式來訪問目標線程,那麼釋放源線程中的內存可能並不實際。我們可能不希望或不需要目標線程通知源,每個工作單元都已完成。 – 2010-08-31 12:51:11