inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]

28. Closure_4

클로저의 형태로 만들다

4

jj4783

작성한 질문수 25

0

되게 간단한 질문인데요, 클로저 파트를 듣다보면 "함수를 클로저 형태로 만들었다.."라는 말씀을 종종 하시는데

이걸 콜백함수를 받는 함수라고 보면 되겠죠...?

함수자체는 콜백을 받는 함수로 만들고, 실행하는 구문쪽에서 클로저의 형태로 실행했다 =>로 이해해도 되려나요?.?

ios swift 동시성

답변 1

0

iOS Developer - 이정


이해하기 쉽게 전달하기 위해 “함수를 클로저 형태로 만들었다”라고 표현했지만, 정확히는 클로저를 매개변수로 받는 함수를 만들었다는 의미입니다.

클로저는 실행할 코드를 하나의 값처럼 표현한 것으로, 변수에 저장하거나 다른 함수에 전달할 수 있습니다.


콜백에 대해서도 간단히 정리해 드리겠습니다.

클로저가 콜백인지 판단할 때는 해당 클로저가 다른 함수에 전달되고, 전달받은 함수에 의해 호출되는지를 보면 됩니다.

// 실행할 코드를 work라는 변수에 클로저로 저장합니다.
let work = {
    print("작업 완료")
}

// 클로저를 매개변수로 받는 함수입니다.
func run(completion: () -> Void) {
    print("작업 시작")

    // run이 전달받은 클로저를 호출합니다.
    // 이때 completion으로 전달된 클로저가 콜백 역할을 합니다.
    completion()
}

// work를 직접 호출합니다.
// 다른 함수에 전달하지 않았으므로 일반적인 클로저 실행입니다.
// 이 경우 work는 콜백이 아닙니다.
work()

// work를 run에 전달합니다.
// run 내부에서 completion()을 호출하면 실제로 work가 실행됩니다.
// 이 경우 work는 콜백 역할을 합니다.
run(completion: work)

결론적으로 클로저와 콜백은 같은 개념이 아닙니다.

클로저를 그냥 직접 호출하면 일반적인 클로저 실행이고, 클로저를 다른 함수에 전달한 뒤 그 함수가 호출하도록 하면 콜백으로 사용한 것입니다.

위 예제에서는 completion()이 전달받은 work를 실행하게 만들었고 이렇게 만들어서 이 호출로 인해 work가 콜백 역할을 하게 됩니다.

Function Types Error

0

4

0

패싱1강에서 강의중에 질문 있습니다.

0

88

2

table view 없음

0

120

2

에러 질문 [UITextField setDataSource:]: unrecognized selector sent to instance 0x107079600"

0

225

2

Main interface 지정 방법

0

188

1

Closure_3 Capture List에 참조 타입 값을 작성할 경우에도 deinit 실행되는 이유가 뭘까요?

0

188

2

TodoCell UIview 생성 후 연결 시 오류

0

436

2

테이블 뷰 데이터 업데이트 관련 질문

0

363

2

TODO List Coredata 질문입니다.

0

349

1

혹시 추가예정인 강의가 대략 언제쯤 나오는지 알수있을까요..?

0

369

1

swift에서 import 헤더를 안해도 되는이유가 궁금합니다.

1

640

1

closure 3 에서 weak로 준 부분이 궁금합니다.

0

337

1

concurrency_1 강의 코드 결과 중 이해가 안가는 부분이 있습니다

0

339

1

self.navigationBar.topItem?.leftBarButtonItem을 해도 button이 보이지 않습니다

0

602

2

func 기능을 쓸때 self. 을 왜쓰는지 이해가 잘안되네요 ㅠㅠ

0

422

1

Closure2 강의에서 예문처럼 똑같이 myfunc2, myfunc3 만들었을때

0

384

1

클론강의 tableViewCell

0

410

1

Location.pin강의에서 self질문이요

1

266

1

넷플릭스 table cell 관련해서 질문이 있습니다.

0

520

1

Capturing Valus

0

304

1

안녕하세요 todolist강의중에서 UI구성중 xib파일 오토레이아웃질문입니다.

0

323

1

환율 강의 테이블뷰에서 데이터 관련 질문있습니다.

0

562

2

환율 네트워크처리1 질문있습니다.

0

277

1

변수 let 위치 질문입니다.

0

377

1