2014-09-10 1 views
0

블록을 사용할 때 문제가 발생했습니다. 내가 만든 간단한 예를 살펴 보겠습니다 :블록의 인수 값을 변경할 수 없습니다.

enter image description here

말은, 내가 전역 변수를 가지고 있고, 나는 함수의 인수로 전달하여 그 값을 변경하려면 "requstWithArg". 그러나 값은 블록에서 변경됩니다. 따라서 인수를 __block 유형으로 선언 할 수 없기 때문에 오류가 발생했습니다.

이 문제를 해결하는 방법은 무엇입니까? 감사!

답변

2

아니라 유형 id는 단순히 객체에 대한 포인터입니다, 그래서 당신은 같은 블록 선언 위에 새 변수를 선언하지 못할 이유 : __block id myVar = arg;

그래서 당신은 할 것이다 :

__block id myVar = arg; 
void (^blk)(void) = ^(void){myVar = [NSString string];}; 

나는 시험을 캔트 이 지금 당장은,하지만 어떤 이유로 작동하지 않습니까?

그러나 나는 또한 정확히 무엇을하고 싶은지 혼란 스럽다. 이것은 내게 무의미한 디자인처럼 보인다. 임의의 객체 포인터를 가져 와서 새로운 NSString ...을 붙여 넣은 것처럼 보입니다. 뭔가 빠졌습니까?