ここに同様の質問がありますが、これは私が望むものを正確に説明していません: Objective C Blocks as Async-callbacks & BAD ACCESS
非同期コールバックでサービスを呼び出すビュー コントローラーがあります。コールバックは、ブロックを使用して実行されます。このブロックは、View Controller の変数を参照して変数を設定します。
次のようになります。
- (void) loadData {
__block MyViewController *me = self;
[self.service executeWithCompletion:^(NSArray *result, NSError *error) {
if (!error) {
me.data = result;
}
}];
}
ただし、View Controller の割り当てを解除すると、「me」はコールバックによって不正にアクセスされます。
「私」をNULLにする最も簡単な方法は何ですか? iVar として配置すると、循環参照が返されます...と思いますか?
明らかな何かが欠けていると思います....
ありがとう