2014-01-02 2 views
0

나는 블록 C가 어떻게 실행될 것인가?주문 목표 -c 블록이 실행됩니까?

int c = 10; 
int (^blockmethod) (int, int); 

blockmethod = ^(int a, int b) { return a+b+c;}; 

int x = blockmethod (10,11); 
c = 11; 
int y = blockmethod(10,11); 
NSLog(@"%d %d",x,y); 
+6

왜 당신이 그것을 스스로 노력하지 않는 변수 (10)

그리고 블록으로이 순서 위해 당신이라는있는 해고 될 것이라고 복사? 이미 모든 코드를 작성했습니다. 또한 예상대로 x, y 순서로 실행됩니다. –

+3

블록은 마술처럼 비동기로 만들지 않습니다. 그들은 비동기적인 방법으로 많이 사용되지만 블록은 그 문제에 대한 좋은 해결책이기 때문에 모든 사람이 혼란 스럽습니다. – jrturton

답변

3

답변

(31) 그들이 먹으 렴을 만들 때이 후 , 변수 C의

blockmethod = ^(int a, int b) { return a+b+c;}; 

값은 항상 10 왜 블록 copys 환경 때문에 31

될 것입니다 이 블록에 대해. 도 값은 11로 변경되지만 블록은 이미 (같은 같은 기능)