2010-03-04 65 views
0

我正在編寫代碼來檢查是否存在網絡連接。簡而言之,我想要發生的事件順序如下:取消時線程的內存會發生什麼變化?

  1. 用戶從Web服務請求信息。
  2. 計時器啓動,並且每秒檢查一次連接是否存在。如果沒有,請提出一個看法。
  3. 當信息全部從Web服務接收時,2中的計時器結束。

從我的理解,具有定時器運行,同時具有Web服務負載需要與其上的計時器一個新的線程。我明白如何做到這一點,並很好。從我的理解,結束該線程,我打電話[線程取消];。如何在該線程中關注內存管理。那裏有一個計時器,等等。

我的另一個線程自行終止,當它發生時它釋放它的所有內容。有沒有辦法做到這一點與取消?謝謝。

回答

1

由於UIKit組件不保證是線程安全的,因此您需要在主線程中保留任何使用UIKit的內容。所以,你的計時器和警報在你的主線程中,你的網絡流量在後臺線程中。後臺線程將使用performSelectorOnMainThread:變體之一與主線程進行通信。您可以在後臺線程中使用計時器,只要它通過類似的功能與您的用戶界面進行通信,並且不會嘗試自己執行提醒。關於從主線程到後臺線程的通信,請參閱performSelector:onThread方法。

就內存而言,您將在新線程的入口點創建一個新的自動釋放池,並且您將在該線程的末尾耗盡該池。在線程本身內部,您可以完全像在主線程中一樣管理內存,並且線程終止其所有內存的釋放。

對於所有的細節檢查了NSThread文檔。 Here is蘋果公司的內存管理文檔,附註釋Autorelease池

相關問題