__block NSString *x = @"123"; // x lives in block storage
void (^printXAndY)(NSString*) = ^(NSString *y) {
x = [x stringByAppendingString:y];
printf("%@ %@\n", x, y);
};
printXAndY(@"456");
アップルのドキュメントには次のように書かれています。
__block ストレージ タイプ __block ストレージ タイプ修飾子を適用することで、インポートされた変数が変更可能 (つまり、読み書き可能) であることを指定できます。
x
が変更可能な場合、これはx = [x stringByAppendingString:y];
間違っていませんか? メモリリークを引き起こす可能性がありますか?