해당 포스팅은 iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해 강의를 수강하고 개인적으로 정리한 내용을 기록한 것 입니다.
Block Operation
- block(closure)을 갖고 있는 오퍼레이션
- 내부의 block 들을 다른 스레드에서 일 하도록 시킨다.
- 기본 설정은 동기적(sync)
- 기존의 Operation을 상속하여 만들어진 개념
특징
- 디스패치 그룹과 유사하게 동작한다. (작업이 모두 종료되었을 때 알려준다.)
- 기본 설정은 동기적이지만 다른 큐로 보내서 비동기적(async)으로 실행하는 것도 가능하다.
- 객체 지향의 래퍼 { } 를 제공하여 여러 작업을 더 할 수 있도록 만든다.
- 각 block은 디폴트 글로벌 큐에서 동작(concurrent 큐)
- Operation을 많이 사용하는 앱에서 GCD와 같이 더 단순한 closure가 필요한 경우에 사용한다.
코드 예시
let bOperation = BlockOperation()
bOperation.addExecutionBlock {
// 추가적으로 더 할 수 있는 작업
}
let bOperation2 = BlockOperation { // with wrapper
result = 2 + 3
print("print \(result)")
}