25

这有什么区别:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    [self doSomthing:object];
}];

和这个:

[self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO]
4

1 回答 1

36
[self performSelectorOnMainThread:@selector(doSomething:) 
                       withObject:object 
                    waitUntilDone:NO]

将在调用时正确执行选择器。如果您想从后台线程影响 UI,这就是您必须使用的。如果你说它YESwaitUntilDone阻塞线程,直到方法完成。

mainQueue将该块添加到主线程的操作队列中,但不保证何时执行。该队列中可能还有其他项目仍在等待执行。

于 2012-05-09T02:38:34.367 回答