2010-11-10 152 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