-
escaping closureSwift 2020. 1. 30. 16:20728x90
개인적으로 공부하며 정리하는 블로그 입니다.
오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :Descaping Closure는 뜻 그대로 탈출 가능한 클로저 입니다. 함수가 실행된 이후에 실행되는 클로저 입니다. 비동기로 실행되거나 completionHandler 등이 escaping closure 입니다.
escaping closure안에서는 self 를 명시적으로 사용해줘야 합니다.
var completionHandlers: [() -> Void] = [] func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) { completionHandlers.append(completionHandler) } func someFunctionWithNonescapingClosure(closure: () -> Void) { closure() } class SomeClass { var x = 10 func doSomething() { someFunctionWithEscapingClosure { self.x = 100 } someFunctionWithNonescapingClosure { x = 200 } } } let instance = SomeClass() instance.doSomething() print(instance.x) // Prints "200" completionHandlers.first?() print(instance.x) // Prints "100"
'Swift' 카테고리의 다른 글
@discardableResult (0) 2020.03.18 ARC(Autometic Reference Counting) (0) 2020.02.03 mutating (0) 2019.11.19 inout (0) 2019.10.24 Variadic functions, 불특정 개수 파라미터 (0) 2019.10.24