在我的dispach_async代码block
中,我无法访问global variables
。我收到此错误Variable is not Assignable (missing _block type specifier)
。
NSString *textString;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
textString = [self getTextString];
});
任何人都可以帮我找出原因吗?
答案 0 :(得分:137)
修改块内的变量时必须使用__block说明符,所以你给出的代码应该是这样的:
__block NSString *textString;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
textString = [self getTextString];
});
Blocks捕获其体内引用的变量的状态,因此必须将捕获的变量声明为可变。考虑到你实际上是设置这个东西,可变性正是你需要的。