我正在测试 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)
}
Run Code Online (Sandbox Code Playgroud)
结果是
操作3完成
操作1完成
操作2完成
你能解释一下 addDependency 的工作原理吗
它应该像操作 1 一样首先完成?
如何依次执行?
如何创建依赖关系?
你可以使用它:
operation3.addDependency(operation2)
operation2.addDependency(operation1)
Run Code Online (Sandbox Code Playgroud)
操作3将在操作2完成时开始,操作2将在操作1完成时开始。
注意:操作 1 应该在操作 2 开始之前完成
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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2853 次 |
| 最近记录: |