私の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];
});
_
誰でも私が理由を見つけるのを助けることができますか?
ブロック内の変数を変更するときは__block指定子を使用する必要があるため、指定したコードは次のようになります。
__block NSString *textString;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
textString = [self getTextString];
});
ブロックは、本体内で参照される変数の状態をキャプチャするため、キャプチャされた変数は可変と宣言する必要があります。そして、本質的にこのことを設定していることを考えると、可変性はまさにあなたが必要とするものです。