在我的应用程序中,我有很多数学任务。如果我在主队列中运行此任务,则每次调用任务后我都会冻结几秒钟的屏幕,但它可以正常工作。如果我在其他队列中运行任务-从一些随机迭代中它什么也没做。如果我在主队列中运行代码,则在每次迭代中都会收到调试消息,在其他队列中-随机迭代之后我什么也没有。看起来,队列死于某种原因。 CPU和内存的使用率没有变化,并保持在50-70%的水平。我想到了无限循环,死锁或类似功能,但是在主队列中它总是可以正常工作。怎么了?
class MyClass {
let serialQueue = DispatchQueue(
label: "com.notrealcompany.hardMathematics",
qos: .userInteractive
)
func doStuff() {
serialQueue.async {
node.getArea()
debugPrint("get area call")
}
}
serialQueue是一个实例变量,但情况没有改变。
答案 0 :(得分:1)
当代码中的方法返回时,听起来serialQueue
正在被释放。尝试将serialQueue
的声明移到实例变量而不是局部变量。
class MyClass {
let serialQueue = DispatchQueue(
label: "com.notrealcompany.hardMathematics",
qos: .userInteractive
)
func doStuff() {
serialQueue.async {
node.getArea()
debugPrint("get area call")
}
}
}