inflearn logo
강의

講義

知識共有

アラン iOS Concurrency(並行処理) - Dispatch QueueとOperation Queueの理解

dismiss 되었을 때 종료질문

解決済みの質問

303

iyea

投稿した質問数 1

0

섹션 3 - 1에서

weak self 로 전달된 클로저는 뷰 컨트롤러가 dismiss되었을 때 클로저의 작업들이 뷰 컨트롤러 객체 안에 속해있기 때문에, 클로저의 작업도 함께 종료된다고 하셨는데.

섹션 3 - 2 에서 보여주신 weak self 예제에서는 뷰 컨트롤러가 소멸되었음에도 클로저의 작업이 계속 진행되더라고요.

 

왜 다른 결과가 나오는지 궁금합니다.

 

 

ios swift

回答 1

1

allen

아 네네 제가 지금 해당 강의 내용을 다시 확인해보니,

해당 내용이 조금 잘 못 표현되었네요. (섹션 3-2번에서 설명드린 내용이 맞습니다.)
(경우에 따라서 아래 내용처럼 dismiss되었을때, 클로저 작업을 중단하게도 설계할 수 있지만.. )

일단 아래 내용의 코드에서는 중단이 안되는 것이 맞습니다. (클로저에 오래 걸리는 일을 시키고.. 그 해당 일이 진행되는 동안에는 뷰컨트롤러가 dismiss 되더라도 클로저의 작업이 진행되는 것이 맞습니다.)

image

이 내용을 정정해서 다시 말씀드리자면

(1) [weak self] ▶️ 큐로 보낸 클로저 작업이 뷰컨트롤러의 RC를 올라가지 않게 하므로 (뷰컨트롤러를 강하게 붙잡아 둘 수 없고) 클로저가 여전히 실행 중이라도 뷰컨트롤러가 해제될 수 있음

(2) [self] ▶️ 큐로 보낸 클로저 작업이 뷰컨트롤러의 RC를 올라가게 하므로 (뷰컨트롤러를 강하게 붙잡아 둘 수 있고) 클로저가 여전히 실행 중인 동안 뷰컨트롤러가 해제될 수 없음


이렇게 정정되는 것이 정확한 표현이겠네요!

그래서, 질문 주신대로 일단 3-1 부분에서 설명드린 내용하고 표현이 잘 못되었고,.. 해당 코드 내용과 일관된 내용으로 수정해서 말씀드리면.. 섹션 3 - 2 에서 weak self 예제에서 보시는 바와 같이.. 뷰 컨트롤러가 소멸 되어도 클로저의 작업은 계속 진행되고.. 이 경우 뷰컨트롤러는 사라질 수 있지만(dismiss), 클로저는 일을 여전히 진행하게 되고.. 뷰컨트롤러의 존재 유무에 따라서 "nil"이 출력되던지 "뷰컨"이 출력되는 것이 맞습니다.

내용이 조금 잘 못되어서 죄송합니다. 해당 내용에 대해 질문이 올라오지 않아서, 정확하게 인지를 못하고 있었네요. 현재 이 강의에 대해 전체적인 업데이트를 진행하고 있어서.. 조만간 현재의 GCD내용 포함 새롭게 도입된 async/await내용도 업데이트를 준비중이니.. 조금만 너그러이 양해를 부탁드립니다.

감사합니다. :)

- 앨런 드림 -

1

iyea

자세한 답변 감사드립니다!

오퍼레이션 큐 질문

0

128

2

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

0

145

2

warning 뜸

0

151

1

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

0

273

1

예제 프로젝트 빌드 실패

0

331

2

serial 큐 질문드립니다.

0

251

1

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

0

325

1

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

0

284

1

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

0

432

1

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

0

491

2

Dependency Protocol 관련

1

364

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

379

2

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

1

285

2

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

1

369

1

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

1

321

1

AsyncOperation을 async await Task로 대체 가능한 지에 대한 질문

1

410

1