これらの例の違いは何ですか? なぜそれらが異なり、異なる結果を提供するのかわかりません。ご覧のとおり、ブロック内のコードはいつかメインスレッドで実行され、最初のコードによって提供される結果は foo または bar のいずれかであり、その理由とタイミングは不明です。
NSString *myString = @"foo";
dispatch_async (dispatch_get_main_queue(), ^{
NSLog (@"%@", myString);
});
myString = @"bar";
2番:
NSMutableString *myString = [NSMutableString stringWithString:@"foo"];
dispatch_async (dispatch_get_main_queue(), ^{
NSLog (@"%@", myString);
});
[myString setString:@"bar"];