ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • escaping closure
    Swift 2020. 1. 30. 16:20
    728x90

    개인적으로 공부하며 정리하는 블로그 입니다.
    오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D

    escaping 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

    댓글

Designed by Tistory.