我剛剛開始實現一些操作子類',它處理一些異步工作,比如爲我下載。我很好奇管理隊列的最佳做法,特別是確保我不會兩次添加相同的任務。操作隊列中的跟蹤操作
有沒有一種方法可以將操作添加到具有名稱的隊列中,還是創建和管理字典的一種方法?說,當項目被添加到隊列中時,您將條目添加到字典中,當它們完成時,您從字典中刪除條目?事先進行條件檢查?
由於操作子類中有一個通知塊,因此可以非常容易地實現。這似乎有點哈克。
感謝您的諮詢。
---- ----編輯
使用該for循環的其他地方(cellForItemAt)展示活動的指標,如果產品在隊列所以嘗試,但它似乎只檢查隊列的第一個項目,返回,但沒有其他人即使有隊列名唯一多個操作:
for operation in downloadQueue.operations {
if operation.name == self.multiPartArray[collectionView.tag][indexPath.item].name { innerCell.contentView.addSubview(self.activityIndicatorView) self.activityIndicatorView.centerXAnchor.constraint(equalTo: innerCell.contentView.centerXAnchor).isActive = true self.activityIndicatorView.centerYAnchor.constraint(equalTo: innerCell.contentView.centerYAnchor).isActive = true
self.activityIndicatorView.isHidden = false
self.activityIndicatorView.startAnimating()
innerCell.contentView.bringSubview(toFront: self.activityIndicatorView)
break
} else {
print("Operation not in queue")
}
}
似乎將業務轉移到隊列時必須做同樣的事情。它檢查第一個操作。如果!= opName,那麼即使opName存在於隊列中但不是第一項,它也會添加該操作。
你可以用它來做那件事。 – vaibby