[英]iOS Swift - How to reference a NSOperationQueue in an extension to cancel existing operations?
我正在为 NSURL 创建一个扩展,它基本上验证一个 URL 存在并返回一个有效的站点。
我在这个过程中使用 NSURLConnection.sendAsynchronousRequest(...) 来实际检查 http 标头响应,并且效果很好。
但是,在我的情况下,我在每次更新文本后检测文本字段中提供的 URL,并希望通过取消任何现有的 NSURLConnection 请求来尝试提高性能。 我认为唯一的方法是创建一个“可引用”的 NSOperationQueue,然后我可以调用它“myOperationQueue.cancelAllOpertions()”。
所以我的问题是,我如何创建一个可引用的 NSOperationQueue,我可以在每次调用此验证函数时调用适当的“cancelAllOperations()”,以便停止任何正在运行的操作?
同样,由于这是一个类扩展,我不能只为操作队列创建一个全局变量,并使用“self.myOperationQueue”来引用它。
您可以使用静态变量向NSURL
添加嵌套类型以保存队列。 这样,您将始终可以从扩展方法中访问相同的队列:
extension NSURL {
struct RequestQueue {
static var queue = NSOperationQueue()
}
func checkURL() {
println(RequestQueue.queue)
}
}
let myURL = NSURL(string: "http://natecook.com/")!
myURL.checkURL()
// <NSOperationQueue: 0x7fe81b7022e0>{name = 'NSOperationQueue 0x7fe81b7022e0'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.