OEAsyncBlockOperation
一个简单的 NSOperation 子类,用于在 NSOperationQueue 上执行异步操作。在该操作完成之前不会调用 complete()
。通常用于自动完成请求,当您希望一次只执行一个异步请求时,在退出队列之前等待异步操作完成。
要求
Swift 3(对于 Swift 2+,请使用 swift_2_2 分支)
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
$ gem install cocoapods
要使用 CocoaPods 将 OEAsyncBlockOperation 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
pod 'OEAsyncBlockOperation'
然后,运行以下命令
$ pod install
人工
只需将 AsyncBlockOperation.swift 文件拖放到您的 xcode 项目中
用法
创建操作
self.operationQueue = OperationQueue()
self.operationQueue.maxConcurrentOperationCount = 1
...
let operation = AsyncBlockOperation.operation(withIdentifier: kBlockOperationIdentifer, queue: self.operationQueue)
weak var weakOperation = operation
operation.operationBlock = {
RequestsManager.defaultManager.performAsyncRequestWithCompletionHandler {
weakOperation?.complete()
}
}
operation.cancelBlock = {
// your cancel code here
}
self.operationQueue.addOperation(operation)
...
取消所有操作
AsyncBlockOperation.cancelAllAsyncBlockOperation(onQueue: self.operationQueue, withIdentifier: kBlockOperationIdentifer)
AsyncBlockOperation.cancelAllAsyncBlockOperation(onQueue: self.operationQueue)