Swift

Operation Queue

kkimin 2021. 5. 26. 10:56

공식문서

https://developer.apple.com/documentation/foundation/operationqueue

 

Apple Developer Documentation

 

developer.apple.com

 

기능

일단 세가지를 제공한다.

Interoperation Dependencied : 순서

Cancellation : 취소

Completion Handler: 완료

 

Read -> Excuting -> Finished / Cancelled (single short 이기때문에 단방향)

 

Operation을 OperationQueue에서 관리한다. 

정상적으로 실행된 operation은 큐에서 자동으로 제거됨, 끝나지 않으면 제거되지 않음(이 때문에 취소 기능을 구현)

 

QueuePriority

QueuePriority를 설정할 수 있음

QualityOfService도 우선순위가 높을 수록 더 빠르게 실행되고 실행범위를 설정 가능

 

main에 하고 싶다. 

let operationQueue = OperationQueue.main

아니면 그냥

let queue = OperationQueue()

 

 

먼저 이걸 쓰게 된 계기 부터 말하자면, 통신을 내가 원하는대로 바꿀 수 없는데, 단건으로 조회하는 통신을 비동기적으로 하면서 해당 index도 알아야될때 사용하게 되었습니다. (마음 같아서는 통신 보낼때 index를 input으로 보내고, output으로 받으면 좋을텐데 그럴수 없었다.)

 

그리고 왜 사용하는지 좀 찾아보니 여러 이유가 있겠지만, 비동기 통신에서 취소 처리를 한다거나, 비동기통신에서 어떤 처리가 복잡해질때 사용하는것 같다고 느꼈다. 이는 RxSwift를 공부하면서 좀 해소되었다고 생각한다.

728x90