performSelector:onThread:在Swift中?

时间:2014-07-02 22:04:12

标签: ios swift nsthread performselector

在当前的iOS应用中,我正在使用此执行选择器方法:

[self performSelector:@selector(doSomething)
             onThread:myThread
           withObject:nil
        waitUntilDone:NO
                modes:[NSArray arrayWithObject:NSRunLoopCommonModes]];

我不确定如何在swift中的特定线程上运行选择器。有什么建议吗?

1 个答案:

答案 0 :(得分:6)

正如我在评论中建议的那样,你不应该再管理线程了。始终使用dispatch_queue而不是线程。

如果你真的想要这样做,这是一个解决方法:CFRunLoopPerformBlock

这是C代码,但我认为您可以将其转换为Swift代码,而无需太多工作。

// worker thread
CFRunLoopRef myrunloop; // some shared variable

void worker_thread_main() {
    myrunloop = CFRunLoopGetCurrent();
    CFRunLoopRun(); // or other methods to run the runloop    
}

// other thread to schedule work

CFRunLoopPerformBlock(myrunloop, kCFRunLoopCommonModes, ^{
    dowork();
});