我正在尝试将 native react 应用程序转换到 chromecast。 chromecast GCKDeviceScanner 必须在主线程上运行。
React Native 页面说要在主线程上运行你必须这样做:
- (dispatch_queue_t)methodQueue
{
return dispatch_get_main_queue();
}
我对swift和ios不是很熟悉,那么这段代码放在哪里,怎么用呢?我有我的方法:
let filterCriteria = GCKFilterCriteria(forAvailableApplicationWithID: "myApp")
let deviceScanner = GCKDeviceScanner(filterCriteria: filterCriteria)
if let deviceScanner = deviceScanner {
deviceScanner.addListener(self)
deviceScanner.startScan()
deviceScanner.passiveScan = true
}
关于如何在主线程上运行我的代码有什么想法吗?
最佳答案
要在主线程中运行该代码部分,您可以这样做:
DispatchQueue.main.async {
let filterCriteria = GCKFilterCriteria(forAvailableApplicationWithID: "myApp")
let deviceScanner = GCKDeviceScanner(filterCriteria: filterCriteria)
if let deviceScanner = deviceScanner {
deviceScanner.addListener(self)
deviceScanner.startScan()
deviceScanner.passiveScan = true
}
}
另一个选项是 RunLoop.main.perform { .. }
。
旧版本,在 Swift 4(甚至可能是 3?)之前:
dispatch_async(dispatch_get_main_queue()) {
let filterCriteria = GCKFilterCriteria(forAvailableApplicationWithID: "myApp")
let deviceScanner = GCKDeviceScanner(filterCriteria: filterCriteria)
if let deviceScanner = deviceScanner {
deviceScanner.addListener(self)
deviceScanner.startScan()
deviceScanner.passiveScan = true
}
}
关于ios - 在 react-native 的主线程上运行 swift 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39232647/