Home » 클로져

클로져

Swift :: @noescape explained

#@noescape @noescape는 함수 파라미터로 클로져를 선언할 때 해당 클로저내의 모든 정보가 외부로 나갈 수 없음을 명시한다. 표현이 좀 애매한데, @noescape로 선언된 클로져는 다음의 동작만이 가능하다. 클로저가 인자로 전달된 함수 내에서 호출 가능 함수 내에서 다른 함수(이 때 이 다른 함수도 클로져를 @noescape로 선언한 경우에만)로 전달하여 호출할 수 있다. 다른 함수나 클로저에서 역시 @noescape로 선언된 경우에 캡쳐 다음의 경우에는 쓸 수 없게 된다. 다른 지역변수에 대입이 불가하다. 이는 클로져 내의 캡쳐된 모든 변수에 대해서 추가적인 강한 참조를 더할 수 없다는 뜻이다.… 더 보기 »Swift :: @noescape explained

Swift :: @autoclosure explained

#@autoclosure 인자로 클로저를 받는 함수를 하나 생각해보자. func f(pred: () -> Bool) { if pred() { println("It's true") } } 이 함수를 호출할 때에는 클로져 자체를 넘겨주게 된다. f({ 2 > 1}) // 혹은 f{2 > 1} @autoclosure는 함수의 파라미터를 자동으로 클로져로 감싸면서 호출한 시점의 문맥에서 동작하게 한다. 따라서 f(2 > 1) 로 호출할 수 있다. 이 기능의 의미는 인자로 전달되는 표현식의 평가 시점에 있다. 일반적인 함수 호출 흐름에서는 표현식이 함수의 인자로 들어가게 될 때, 함수는 값을 전달받게 되므로 표현식이… 더 보기 »Swift :: @autoclosure explained