concurrency_1 강의 코드 결과 중 이해가 안가는 부분이 있습니다
331
4 asked
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
start()
}
func simpleWork() {
print("doing simple work")
}
func someWork() async -> Int {
try? await Task.sleep(nanoseconds: 1000 1000 1000 * 3)
return 10
}
func start() {
Task {
print("start !")
let num = await someWork()
print(num)
print("finish !")
}
simpleWork()
}
}concurrency_1 강의를 듣고 위의 코드를 playground가 아닌 project파일을 만들어서 실행시켜보았습니다.
저는 아래와 같은 결과가 나올거라 예상했었습니다.
start !
doing simple work
10
finish그런데 빌드를 시켜서 터미널에 뜨는 것을 보니 아래와 같은 결과가 나옵니다.
doing simple work
start !
10
finish !Task 자체를 통째로 아예 비동기 작업으로 인식해서 이런 결과가 나오는 것일까요??
결과가 이렇게 나오는 이유를 잘 모르겠습니다🥲
Answer 1
1
안녕하세요
우선 Task 블록은 비동기 동작이 맞습니다.
그래서 보통은 Task블록과 일반코드가 있을 때 어떤게 먼저 실행될지는 상황에 따라 달라집니다.
그러나 일반코드가 무조건 먼저 실행되는 조건이 있습니다.
UIImage, UIView, UIViewController 같은 화면으로 구성되는 클래스를 상속받을 때는 무조건 일반코드가 먼저 실행됩니다.
이 때는 Task의 우선순위가 낮아진다고 이해하시면 될 것 같습니다.
패싱1강에서 강의중에 질문 있습니다.
0
72
2
table view 없음
0
99
2
에러 질문 [UITextField setDataSource:]: unrecognized selector sent to instance 0x107079600"
0
202
2
Main interface 지정 방법
0
168
1
Closure_3 Capture List에 참조 타입 값을 작성할 경우에도 deinit 실행되는 이유가 뭘까요?
0
171
2
TodoCell UIview 생성 후 연결 시 오류
0
415
2
테이블 뷰 데이터 업데이트 관련 질문
0
345
2
TODO List Coredata 질문입니다.
0
342
1
혹시 추가예정인 강의가 대략 언제쯤 나오는지 알수있을까요..?
0
359
1
swift에서 import 헤더를 안해도 되는이유가 궁금합니다.
1
620
1
closure 3 에서 weak로 준 부분이 궁금합니다.
0
320
1
self.navigationBar.topItem?.leftBarButtonItem을 해도 button이 보이지 않습니다
0
592
2
func 기능을 쓸때 self. 을 왜쓰는지 이해가 잘안되네요 ㅠㅠ
0
412
1
Closure2 강의에서 예문처럼 똑같이 myfunc2, myfunc3 만들었을때
0
373
1
클론강의 tableViewCell
0
404
1
Location.pin강의에서 self질문이요
1
253
1
넷플릭스 table cell 관련해서 질문이 있습니다.
0
503
1
Capturing Valus
0
295
1
안녕하세요 todolist강의중에서 UI구성중 xib파일 오토레이아웃질문입니다.
0
314
1
환율 강의 테이블뷰에서 데이터 관련 질문있습니다.
0
552
2
환율 네트워크처리1 질문있습니다.
0
274
1
변수 let 위치 질문입니다.
0
366
1
섹션 9 영상 잘림 확인 부탁드립니다
0
334
1
안녕하세요 강의내용 질문입니다.
0
380
1

