capturing
-
[iOS] Block의 캡쳐링과 __block앱등이에게 살충제를 뿌린다./iOS 2016. 1. 17. 18:07
__block이 Block의 캡쳐링에 미치는 영향에 대해서 알아보자 결과는 : 23 42 17이 나오게 된다. 결과는 : 17 17 17 이 나오게 된다. 왜냐하면 Block은 생성이 될 때 주변의 Context에서 캡쳐링을 하게 된다. 즉 Block외부에 있는 변수들의 값을 상수 형태로 저장한 뒤 사용하게 되는 것이다. Block은 생성되는 시점과 호출되는 시점이 다르다는 특징이 있는데, 이 때 캡쳐링이 장점으로 작용하는 경우가 많다. 첫 번째 경우를 볼 때, block1의 NSLog(@"%d", val)은 NSLog(@"%d",23);으로 선언된 것과 다름이 없다. 물론 block2의 경우도 NSLog(@"%d",42);로 선언이 된것과 같은 다르지 않다. 하지만 두 번째 경우에는 다르다. val을 ..