这些例子有什么区别?我无法弄清楚为什么它们不同并提供不同的结果。如我所见,块中的代码有时会在主线程中运行,而第一个代码提供的结果是 foo 或 bar,不知道为什么以及何时。
NSString *myString = @"foo";
dispatch_async (dispatch_get_main_queue(), ^{
NSLog (@"%@", myString);
});
myString = @"bar";
第二:
NSMutableString *myString = [NSMutableString stringWithString:@"foo"];
dispatch_async (dispatch_get_main_queue(), ^{
NSLog (@"%@", myString);
});
[myString setString:@"bar"];