inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해

Operation의 순서기능 중 질문드립니다!

296

rokwon

작성한 질문수 2

1

강의 한 편 한 편 볼때마다 지식이 업그레이드 되는 기분입니다. 좋은 강의 항상 감사드립니다~!
 
다름이 아니라 Operation의 순서기능 중 Operation에서 이전 작업의 결과물을 받기 위해선 프로토콜을 채택 혹은 작업물을 넘기는 Operation을 만들어야 한다고 말씀해주셨는데 그냥 outputImage를 직접 가져오는 것으로 해도되지 않을까요?
아래의 방법입니다!
class TiltShiftOperation: Operation {
    var inputImage: UIImage?
    var outputImage: UIImage?
    
    override func main() {
        if inputImage == .none,    // 인풋이미지가 없으면,
            let dependencyImageProvider = dependencies
                .filter({ $0 is ImageLoadOperation})
                .first as? ImageLoadOperation {   // 프로토콜이 아닌 직접적으로 Operation꺼내기
            inputImage = dependencyImageProvider.outputImage
        }
        
        // 실제 작업
        outputImage = tiltShift(image: inputImage)
    }
}
 
이 방법의 문제는 뭐가 있을까요?
재사용성의 의미에서는 확실히 Protocol을 이용한 타입 캐스팅이 좋지만 그것 말고 프로토콜 채택으로 가져가는 또다른 장점이 있을까요?

operation ios 의존성 swift

답변 1

1

앨런(Allen)

안녕하세요! 록원 님.

모듈화의 장점을 위해서 프로토콜을 채택해서, 프로토콜을 통해 전달하도록 만든 것이지요. ^^

해당 프로토콜을, 채택한 모든 타입에서는 이미지 전달이 가능해지니까요!


만약에, 모듈화로 굳이 만들 필요가 없다면.. 작업 자체도 여러개로 나눌 필요 없이

하나로 설계했을 테니까요 :)



어쨌든. 프로토콜로 만든다면 ImageLoadOperation 클래스가 아닌 다른 타입이 존재한다고 하더라도

이미지 전달이 가능해지니..장점이 훨씬 커질 것으로 보입니다...^^


감사합니다. :)

0

rokwon

키워드를 잘못 잡고있었네요. 애초에 작업을 나누는 것도 모듈화를 위한 것이었는데!
답변 감사드립니다!

0

앨런(Allen)

네네 강의 시청해주셔서.. 고맙습니다. :)

오퍼레이션 큐 질문

0

128

2

2) 오퍼레이션큐(OperationQueue) 강의 질문입니다

0

145

2

warning 뜸

0

151

1

수업자료 markup 에 대해 궁금합니다!

0

273

1

예제 프로젝트 빌드 실패

0

331

2

serial 큐 질문드립니다.

0

252

1

[7-3.DispatchBarrier] 예제 코드 질문

0

325

1

안녕하세요, GCD 관련 질문드립니다..

0

284

1

main.async 작동 질문(+ vs global(),async)

0

432

1

dismiss 되었을 때 종료질문

0

303

1

'동기'와 '동시성 프로그래밍'에 대해 질문드립니다.

0

492

2

Dependency Protocol 관련

1

365

1

시리얼 큐와 sync 관련

0

464

2

sync이지만 Queue에 넣으면 async로 동작한다는 말의 의미

0

645

1

lazy var 이슈로 생긴 여러 변수들은 어디에 있나요?

0

385

1

global큐에 sync로 작업을 보냈을 때는 터지지 않는 이유가 궁금합니다.

1

501

2

비동기 개념에서 무엇을 return하는 거죠??

0

391

1

안녕하세욤

1

339

1

Barrier 작업 관련 질문입니다.

1

340

1

디스패치 그룹

1

381

1

global async안에 global async를 만들게되면 어떻게 되나요??

2

380

2

동기적 함수를 비동기적 함수로 바꾸는 부분에서 질문 있습니다

1

285

2

비동기오퍼레이션 관련 질문

1

371

1

강의자료는 어디에 있나요?

1

322

1