gpt4 book ai didi

ios - adddependency 方法在 NSOperationQueue 中的工作原理

转载 作者:可可西里 更新时间:2023-11-01 00:58:35 33 4
gpt4 key购买 nike

我正在测试 NSoperationqueue

 queue = NSOperationQueue()
let operation1 = NSBlockOperation(block: {
let img1 = NSData(contentsOfURL: self.img1)
NSOperationQueue.mainQueue().addOperationWithBlock({
self.imgs1.image = UIImage(data: img1!)

})
})

operation1.completionBlock = {
print("Operation 1 completed")
}
queue.addOperation(operation1)




let operation2 = NSBlockOperation(block: {
let img2 = NSData(contentsOfURL: self.img2)
NSOperationQueue.mainQueue().addOperationWithBlock({
self.imgs2.image = UIImage(data: img2!)

})
})



operation2.completionBlock = {
print("Operation 2 completed")
}
queue.addOperation(operation2)

let operation3 = NSBlockOperation(block: {
let img3 = NSData(contentsOfURL: self.img3)
NSOperationQueue.mainQueue().addOperationWithBlock({
self.imgs3.image = UIImage(data: img3!)

})
})

operation3.completionBlock = {
print("Operation 3 completed")
}
queue.addOperation(operation3)

operation3.addDependency(operation1)

}

结果是

Operation 3 completed

Operation 1 completed

Operation 2 completed

你能解释一下 addDependency 的工作原理吗

它应该像操作 1 应该先完成一样工作?

如何一个接一个地执行?

如何创建依赖?

最佳答案

你可以使用它:

operation3.addDependency(operation2)
operation2.addDependency(operation1)

operation2完成后operation3开始,operation1完成后operation2开始

注意:operation1 应该在 operation2 开始之前完成

queue = NSOperationQueue()
let operation1 = NSBlockOperation(block: {
let img1 = NSData(contentsOfURL: self.img1)
NSOperationQueue.mainQueue().addOperationWithBlock({
self.imgs1.image = UIImage(data: img1!)

})
})

operation1.completionBlock = {
print("Operation 1 completed")
}


let operation2 = NSBlockOperation(block: {
let img2 = NSData(contentsOfURL: self.img2)
NSOperationQueue.mainQueue().addOperationWithBlock({
self.imgs2.image = UIImage(data: img2!)

})
})



operation2.completionBlock = {
print("Operation 2 completed")
}

let operation3 = NSBlockOperation(block: {
let img3 = NSData(contentsOfURL: self.img3)
NSOperationQueue.mainQueue().addOperationWithBlock({
self.imgs3.image = UIImage(data: img3!)

})
})

operation3.completionBlock = {
print("Operation 3 completed")
}

operation3.addDependency(operation2)
operation2.addDependency(operation1)

queue.addOperation(operation1)
queue.addOperation(operation2)
queue.addOperation(operation3)


}

关于ios - adddependency 方法在 NSOperationQueue 中的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39100653/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com