[英]Run swift code on main thread in react-native
我正在尝试将 react-native 应用程序转换为 chromecast。 chromecast GCKDeviceScanner 必须在主线程上运行。
反应本机页面说要在主线程上运行,您必须这样做:
- (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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.