私はいくつかの非同期処理を処理するいくつかの操作サブクラスを実装し始めました。キューを管理するためのベストプラクティス、特に同じタスクを2回追加しないことを確認することに興味があります。操作キュー内での操作のトラッキング
名前を付けてキューに操作を追加することはできますか、それとも辞書を作成して管理するのですか?キューに項目が追加されると、辞書に項目を追加し、終了したら辞書から項目を削除します。事前に条件チェックを行っていますか?
これは、操作サブクラス内に通知ブロックがあるので、非常に簡単に実現できます。ちょっとハッキリしているようです。
ありがとうございました。
---- EDIT ----
だからアイテムがキューにある場合、活動の指標を表示するために他の場所でループ(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が存在する場合でも操作は追加されますが、最初の項目ではありません。
uのために使用できます。 – vaibby