1

我在后台线程上运行一个选择器,然后我需要调用主线程并且它工作得很好,但是当有很多选择器在后台运行并且他们尝试在主线程上调用一个选择器时,它有时会被调用,有时不会。我可以看到代码到达那里,因为我正在使用 NSLog(); 打印

这就是我在后台调用选择器的方式:

NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc]
                                        initWithTarget:self
                                        selector:@selector(getPath:)
                                        object:datos];
[queue addOperation:operation];
[operation release];

这就是后台方法调用主线程方法的方式:

NSLog(@"Arrives here");
[self performSelectorOnMainThread:@selector(setPath:) withObject:array waitUntilDone:YES];

为什么有时有效,有时无效?

4

1 回答 1

0

你怎么知道它不起作用?

有什么东西阻塞了你的主线程吗?一个模态会话,有机会吗?

请注意,“很多选择器在后台运行”听起来很吓人;不受限制的并发几乎肯定是错误的答案。很容易创建一个系统,它会以如此多的噪音冲击主事件循环,以至于看起来事件正在被丢弃。

于 2013-06-07T06:18:22.697 回答