我刚刚开始实现一些操作子类',它处理一些异步工作,比如为我下载。我很好奇管理队列的最佳做法,特别是确保我不会两次添加相同的任务。操作队列中的跟踪操作
有没有一种方法可以将操作添加到具有名称的队列中,还是创建和管理字典的一种方法?说,当项目被添加到队列中时,您将条目添加到字典中,当它们完成时,您从字典中删除条目?事先进行条件检查?
由于操作子类中有一个通知块,因此可以非常容易地实现。这似乎有点哈克。
感谢您的咨询。
---- ----编辑
使用该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