这两者有何不同:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self doSomthing:object];
}];
并且这个:[self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO]
这两者有何不同:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self doSomthing:object];
}];
并且这个:[self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO]
[self performSelectorOnMainThread:@selector(doSomething:)
withObject:object
waitUntilDone:NO]
在调用时会立即执行选择器。如果您想从后台线程影响UI,则必须使用此选项。如果将waitUntilDone
设置为YES
,它将阻止线程直到方法完成。
mainQueue
将该块添加到主线程的操作队列中,但不能保证何时执行。队列中可能还有其他项目等待执行。
performSelectorOnMainThread
并且设置waitUntilDone:NO
的含义是它会在下一次运行循环时执行,这与主队列(mainQueue)的行为完全相同。 - Blitz