클로저, 캡처링


클로저, 캡처링

클로저는 이름없는 함수이며 참조타입이다. 즉, 메모리 Heap에 저장되고 메모리 카운트를 통해 메모리에 저장된다. 레퍼런스 캡처링 기본적으로 사용할 변수 값을 참조해 원본 값이 변경되면 영향을 받는 레퍼런스 캡처링을 사용하게 된다. 생성 이후의 값에 영향을 받음 var a = 0 var b = 0 let closure = { print(a, b) // 레퍼런스 캡처링 } a = 5 closure() // 실행값 5 0 밸류 캡처링 캡쳐 리스트를 사용하면 밸류 캡쳐링을 하게되어 클로저 생성 당시의 값을 갖고 있다가 사용하게 된다. 생성 이후의 값에 영향이 없음 var a = 0 var b = 0 let clouser = { [a,b] in // 밸류 캡처링, 캡쳐 리스트 print(a,b) } a = 5 closure() // 실행값 0,0 그렇지만 class의 경우 밸류 캡처링 방법을 사용해도 되지 않고 레퍼런스 캡처링이 실행된다. class TestClass { public var...



원문링크 : 클로저, 캡처링