2009-12-21 16 views
0

我作爲後臺線程在UIview中啓動了一個線程,該線程爲視圖傳輸數據。然而,在這種情況下會發生崩潰:當我在線程嘗試傳輸數據的時候離開視圖。我在UIview的背景中啓動了一個線程,離開視圖後線程會發生什麼?

我不明白UIview對象和線程之間的關係。我想它會崩潰,因爲線程試圖訪問UIview成員或方法,而這些成員或方法不再存在。所以,我想知道如果UIView已經離開,發生了什麼事情。

這是我的代碼分離:

- (void)reloadData { 
    isLoaded = NO; //UIView member. 
    [NSThread detachNewThreadSelector:@selector(getThreadInAnotherThread) toTarget:self withObject:nil]; 
} 


- (void)getThreadInAnotherThread { 
      //Loading code 
      isLoaded = YES; 
    [self performSelectorOnMainThread:@selector(reloadTable) withObject:nil waitUntilDone:YES]; 
} 

而且我沒有viewDidDisappear做任何事情。

回答

0

視圖和線程之間沒有關係,除非你自己把它放在那裏。

+0

那麼,如果我離開了UIview,線程仍然試圖訪問它的成員,它會崩潰?在我離開後,UIview何時發佈? – user268743 2009-12-21 04:38:40

1

至於detachNewThreadSelector的文檔:toTarget:withObject規定:

aTarget和anArgument的分離的線程的執行期間被保留的對象,然後被釋放。

與同爲performSelectorOnMainThread:withObject:waitUntilDone:

這種方法保留了接收機和arg參數進行選擇之後,直至。

如果它仍然不清楚發生了什麼,請參閱可可內存管理指南。

+0

謝謝!我知道了。 – user268743 2009-12-22 08:30:02

相關問題