일반적으로 클로저를 파라미터로 사용하는 함수의 실행이 종료되면 해당 클로저는 제거됩니다.
함수의 실행이 종료되더라도 클로저를 계속 사용하고 싶으면, "@escaping" 키워드를 사용하여 함수에서 클로저를 탈출시켜야 합니다.
"@escaping" 키워드는 함수 내부에 존재하는 클로저를 외부 변수에 저장하는 방식으로 클로저를 탈출시킵니다.
✅ 일반적인 클로저 사용
func hello(closure: () -> Void){ closure() } hello { print("안녕~!") } /* 출력 결과 안녕~! */
✅ "@escaping" 키워드를 사용하여 함수 종료 뒤에도 클로저 사용
var saveClosure = {} // 클로저를 저장할 변수 선언 func hello(closure: @escaping () -> Void){ saveClosure = closure // saveClosure 변수에 클로저를 할당하는 코드 } hello { print("안녕~!") // 클로저 실행X, saveClosure 변수에 클로저를 할당하는 코드 실행 } saveClosure() // 클로저 실행: 안녕~!