저는 일부 다운로드 작업과 같은 비동기 작업을 처리하는 일부 작업 하위 클래스를 구현하기 시작했습니다. 큐 관리에 대한 모범 사례에 대해 궁금합니다. 특히 동일한 작업을 두 번 추가하지 않도록하십시오.작업 대기열에서 작업 추적
작업 이름을 큐에 추가하거나 사전을 만들고 관리하는 경우가 있을까요? 예, 항목이 큐에 추가되면 항목을 사전에 추가하고 완료되면 사전에서 항목을 제거합니까? 미리 조건부 검사를 수행합니까?
작업 하위 클래스 내에 알림 블록이 있으므로 쉽게 구현할 수 있습니다. 그것은 단지 약간 해키처럼 보인다.
고마워.
---- 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