1

比方说,在我的 GUI 应用程序(它可以跨 OSX/iOS 移植)中,我有多个线程可以向主应用程序线程发送通知。通知应该在处理 Cocoa 的输入事件和重绘请求的同一上下文中处理。我的目标是在屏幕上反映来自并发线程的某些事件。

在 Windows 上有 PostMessage(),那么它在 OS X 和 iOS 上的模拟是什么?

dispatch_async()似乎是一个很好的候选人,但是,文档说:

目标队列确定该块是串行调用还是与提交到同一队列的其他块并发调用。

老实说,这只会造成混乱。另外,不清楚要使用哪个消息队列,dispatch_async以便针对 GUI 事件串行处理消息。

4

2 回答 2

6

你是对的 dispatch_async 是要走的路。您应该寻找的队列是主队列:

dispatch_async(dispatch_get_main_queue(), ^{
    NSLog(@"Got to main thread.");
});
于 2013-06-23T21:53:03.980 回答
2

在 OS X 上更老式的方法是 NSObject 方法performSelectorOnMainThread:withObject:waitUntilDone:。我希望它也适用于 iOS。

于 2013-06-24T02:44:25.487 回答