0

我有一个方法(我们称之为运行):

- (void)run
{
    // Do some initialisation

    // Loop until another thread signals it to exit
    while (SHOULD_STILL_LOOP) { ... }

    // Clean up code
}

我称之为:

[self performSelectorInBackground:@selector(run)];

实现 SHOULD_STILL_LOOP 的最佳方式是什么?我应该使用原子属性、NSCondition、调度信号量吗?

也许一些堆栈可以给我一些建议?

谢谢。

4

1 回答 1

0

我找到了一种方法,那就是使用 NSThread。

- (void)run:(id)obj
{
    while(![[NSThread currentThread] isCancelled]) { ... }
}

- (void)start
{
    self.thread = [[NSThread alloc] initWithTarget:self
                                          selector:@selector(run)
                                            object:self.object];
    [self.thread start];
}

- (void)stop
{
    [self.thread cancel];
    self.thread = nil;
}
于 2012-06-20T22:41:14.957 回答