我正在测试 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/