인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

DrStyle님의 프로필 이미지
DrStyle

작성한 질문수

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

1) 반드시 메인큐에서 처리해야하는 작업 2) sync메서드에 대한 주의사항 3) weak, strong캡처 주의 4)컴플리션핸들러의 존재이유 5) 동기적함수를 비동기함수 처럼 만드는 방법

비동기 함수 만드는 법에 대해서 질문드립니다!

작성

·

176

1

안녕하세요. 강의 잘 듣고 있습니다.
질문이 하나 있어서요!
 

func asyncTiltShift(_ inputImage: UIImage?, runQueue: DispatchQueue, completionQueue: DispatchQueue, completion: @escaping (UIImage?, Error?) -> ())

 
runQueue와 completionQueue의 type이 DispathQueue로만 되어있던데, .체이닝으로 보니 main과 global은 안나오더라구요.
 
이 부분을 이해하려면, asyncTiltShift 메서드에 인자 DispatchQueue만 있다는 것은 DispatchQueue가 main과 global을 사용할 수 있어서 라고 이해하면 될까요?
 
수업에 나와있지않은 부분이라 실례를 무릎쓰고 여쭤봅니다^^;;
 

답변 1

2

앨런(Allen)님의 프로필 이미지
앨런(Allen)
지식공유자

아 네 안녕하세요!
DrStyle 님!

함수를 만들때는 타입을 쓰는 것이고, 함수를 실행할때는 실제 값을 줘야하는 것이라서 그렇습니다.

제가 위에 예시를 만들어서 붙였는데.. 아마 위에 이미지를 보시면 바로 이해하시지 않을까 하는데...

DispatchQueue는 타입이고, 
DispatchQueue.main 또는 DispatchQueue.global( ) 이것은 인스턴스이니까..

함수를 정의할때는 타입으로.. 실제 실행할때는 인스턴스 값을 줘서 실행하는... 이런 것으로 이해하시면 될 것 같아요^^;  (살짝 헷갈리신 듯 합니다..ㅎㅎ)


혹시나 이해가 안되시면 질문 다시 남겨주세요!

고맙습니다. :)

DrStyle님의 프로필 이미지
DrStyle

작성한 질문수

질문하기