NSOperationQueue mainQueue vs performSelectorOnMainThread?
这有什么区别:
[[NSOperationQueue mainQueue] addOperationWithBlock:^{ [self doSomthing:object]; }];
和这个:
[self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO]
[self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO]
当它被调用时将执行右select器。 如果你想从后台线程中影响UI,这就是你必须使用的。 如果你说YES
waitUntilDone
,它将阻塞线程,直到方法完成。
mainQueue
将该块添加到主mainQueue
的操作队列中,但不保证何时将被执行。 该队列中可能还有其他项目正在等待执行。
- 快速替代互斥
- 使核心数据线程安全
- 在iOS 7上使用Private Queue Deadlocks Parent的子级上下文执行块locking和等待
- iOS GCD:任何全局队列和具有后台优先级(DISPATCH_QUEUE_PRIORITY_BACKGROUND)之间的区别?
- 为什么我应该为每个新线程或NSOperation创build一个NSManagedObjectContext,而不是在主线程上调用Core Data?
- dispatch_once过度杀伤了+ ?
- iOS GCD自定义并发队列执行顺序
- 在iOS中联锁的操作?
- Swift 3 GCDlockingvariables和block_and_release错误