2010-11-10 192 views
3

所以我有一個執行循環,也因爲路我的程序工作我使用調用此方法的方法,如何殺死/停止後臺線程?

[self performSelectorInBackground:@selector(myMethod:) withObject:arg]; 

而且方法本身,

- (void)myMethod:(id)arg { 
    //... 

    for (//Loop Conditions) { 
     if (stopMorse) { 
      break; 
     } 
     //Do stuff 
    } 

    //... 
} 

現在我想以允許用戶停止運行這個循環,所以有殺死/停止線程的方法。

我試着添加一個布爾,但問題是它似乎並沒有得到更新,因爲它是在一個單獨的線程。什麼是阻止這個循環運行的最好方法?

+0

告訴我們在哪裏聲明瞭'BOOL stopMorse'(全局的,類實例等),並向我們展示了更改它的代碼。 – benzado 2010-11-10 22:42:24

回答

4

由於this answer to a similar questionthis answer to another similar question中概述的原因,您不應強行殺死/停止線程。

應該可以檢查一個布爾值,因爲你正在做的事情,並且不應該有另一個線程設置布爾值的問題。你能發佈試圖設置布爾值的代碼嗎?

+0

感謝您的幫助。我能弄明白。就像你說的,當另一個線程設置它時可以檢查布爾值。這只是我的代碼中的一個簡單的錯誤。 – cgossain 2010-11-11 03:05:22