Swift 多線程-操作隊列NSOperation

操作隊列NSOperation

NSOperation有3個有用的布爾屬性,finished、 cancelled和ready
一旦操作執行完成,finisher將被置為true
一旦操作被取消,cancelled將被置為true
一旦準備即將被執行,ready將被置為true

3.1
//聲明變量
let queue = NSOperationQueue()


@IBAction func downloadImages(sender: UIButton) {
   
    queue.addOperationWithBlock { () -> Void in
        let image1 = Downloader.downloadImageWithURL(self.imageUrls[0])
        
        NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
            self.imageViewArr[0].image = image1
        })
    }
    
    // 1. Create a NSBlockOperation object
    
    let op2 = NSBlockOperation { () -> Void in
        let image2 = Downloader.downloadImageWithURL(self.imageUrls[1])
        
        NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
            self.imageViewArr[1].image = image2
        })
    }
    
    // 2. Set finish callback
    op2.completionBlock = { print("image2 downloaded") }
    
    // 3. Add to operation queue manually
//        queue.addOperation(op2)
    
    
    let op3 = NSBlockOperation { () -> Void in
        let image3 = Downloader.downloadImageWithURL(self.imageUrls[2])
        
        NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
            self.imageViewArr[2].image = image3
        })
    }
    
    op3.completionBlock = { print("image3 cancelled: \(op3.cancelled)") }
    

    
    let op4 = NSBlockOperation { () -> Void in
        let image4 = Downloader.downloadImageWithURL(self.imageUrls[3])
        
        NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
            self.imageViewArr[3].image = image4
        })
    }
    
    op4.completionBlock = { print("image4 downloaded") }
    

    // 依賴關系
    op3.addDependency(op4)
    op2.addDependency(op3)
    
    queue.addOperation(op4)
    queue.addOperation(op3)
    queue.addOperation(op2)

    
}



@IBAction func cancelDown(sender: UIButton) {
    
    queue.cancelAllOperations()
    
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容