簡體   English   中英

iOS Swift - 如何在擴展中引用 NSOperationQueue 以取消現有操作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM