인프런 커뮤니티 질문&답변
Operation의 순서기능 중 질문드립니다!
작성
·
282
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을 이용한 타입 캐스팅이 좋지만 그것 말고 프로토콜 채택으로 가져가는 또다른 장점이 있을까요?
답변 1
1
앨런(Allen)
지식공유자
안녕하세요! 록원 님.
모듈화의 장점을 위해서 프로토콜을 채택해서, 프로토콜을 통해 전달하도록 만든 것이지요. ^^
해당 프로토콜을, 채택한 모든 타입에서는 이미지 전달이 가능해지니까요!
만약에, 모듈화로 굳이 만들 필요가 없다면.. 작업 자체도 여러개로 나눌 필요 없이
하나로 설계했을 테니까요 :)
어쨌든. 프로토콜로 만든다면 ImageLoadOperation 클래스가 아닌 다른 타입이 존재한다고 하더라도
이미지 전달이 가능해지니..장점이 훨씬 커질 것으로 보입니다...^^
감사합니다. :)






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