perfomSelectorOnMainThread:withObject:waitUntilDone:随机停止工作

时间:2013-06-07 05:53:23

标签: iphone ios objective-c nsthread nsoperationqueue

我正在后台线程上运行一个选择器,然后我需要调用主线程并且它工作正常,但是当有很多选择器在后台运行并且他们尝试在主线程上调用选择器时它被调用,有时它不会。我可以看到代码到达那里因为我正在使用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];

为什么它有时会起作用,有时却不起作用?

1 个答案:

答案 0 :(得分:0)

你怎么知道它不起作用?

你的主线程有什么阻塞吗?一次模态会议,每次机会?

请注意“很多选择器在后台运行”听起来很可怕;非限制并发几乎可以肯定是错误的答案。很容易创建一个系统,它会在主要事件循环中产生如此大的噪音,看起来事件正在被丢弃。