Operation | Apple Developer Documentation
Operation은 GCD를 객체지향적으로 재탄생 시킨 것.
동시성 프로그래밍에 관련된 작업을 Operation이라는 객체로 만들어 놓고 사용할 수 있다.
하나씩 Operation을 사용할 수도 있고, OperationQueue를 사용해 GCD처럼 관리 및 실행 할 수 있다.
관련 작업을 객체로 만들고 Queue를 사용해서 관리하는 것은 사실
GCD에도 작업을 객체로 만들어주는 DispatchWorkItem이 있다 이 둘은 뭐가 다른것인가?
먼저 Operation은 DispatchWorkItem 보다 먼저 나왔다.
둘이 다른 큰 이유 중 하나는 Operation은 객체지향적으로 설계되어 좀 더 세부적으로 스케쥴링을 할 수 있다.
class Operation: NSObject
Operation은 추상클래스여서 항상 상속받는 클래스를 만들어서 사용해야한다.
커스텀 클래스로 직접 만들어 주거나, BlockOperation이라는 하위 클래스를 사용해 만들수도 있다.
class BlockOperation: Operation
Operation을 생성하는 코드
let operation = BlockOperation {
// some code
}
// BlockOperation의 메서드
operation.addExecutionBlock {
// some code to be executed after the operation operation.
}
// Operation의 프로퍼티
operation.completionBlock = {
// some code to be executed after the operation and executionBlocks
}
첫번째 BlockOperation을 생성하는 부분은 BlockOperation{} 안에 작업할 코드를 작성해 객체화 할 수 있다.