我在网上没有找到任何合适的答案,所以我在这里发布我的问题。
__block int test = 1;
dispatch_async(dispatch_get_main_queue(), ^{
test = 2;
});
NSLog(@"%i",test);
此代码将导致控制台消息“1”。
__block NSString *test = @"no";
dispatch_async(dispatch_get_main_queue(), ^{
test = @"yes";
});
NSLog(@"%@",test);
此代码将导致控制台消息“否”。
为什么会这样?我认为 __block 标识符应该解决这种情况下的所有问题。我的假设是复制了局部变量,并且块内的代码实际上并没有修改其自身之外的任何内容。
如何修改 dispatch_async 中的局部变量?
对不起,如果这是一个菜鸟问题。