我正在尝试使用这段代码:
func simpleEscaping(test: String, complete: @escaping (_ testEscaped: String)->()) {
complete(test)
}
func testBgAsync() {
let backgroundQueue = DispatchQueue.global(qos: DispatchQoS.QoSClass.background)
simpleEscaping(test: "Test") { (testEscaped) in
backgroundQueue.async {
sleep(1)
print("Test escaped value is: \(testEscaped)")
}
}
}
testBgAsync()
它在操场上可以正常工作:
显示“测试转义值是:测试”
。
我也在实际设备上尝试了以下代码:
- iPhoneX v11.4
- iPhone5C v10.3.3
结果与iPhoneX相同:
“测试转义值是:测试”
对于iPhone5C:没有结果。试图放置一些断点,并发现backgroundQueue.async {}
中的代码未运行。
是因为实施不当还是因为设备版本不同而有所不同?
答案 0 :(得分:0)
通常,您应使用的最低QoS为.utility
。
.background
的优先级非常低,处于该优先级的项目可能永远不会发送,尤其是在低功耗设备(例如iPhone 5C)上