同僚とのちょっとした口論を解決するのを手伝ってください。この状況では、弱い自己は必要ありませんよね?
(彼は私を信じていません)
__weak auto weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf _someHelper];
});
同僚とのちょっとした口論を解決するのを手伝ってください。この状況では、弱い自己は必要ありませんよね?
(彼は私を信じていません)
__weak auto weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf _someHelper];
});
このような場合、必ずしも必要ではありません。この状況では、この構文上のノイズを気にしないことがよくあります。
そうであった場合、dispatch_after
またはこのメイン キューへのディスパッチが何らかの非同期呼び出し内に埋もれていた場合は、weakSelf
パターンの引数があります (そのため、強い参照を必要以上に長く保持しないでください) が、単純な例では、すぐにディスパッチします。メイン キューへの弱い参照self
は必要ありません。
そうは言っても、ここでパターンを採用することは間違いではありません。weakSelf
不要なだけです。
私が考えている疑問は、メイン キューにディスパッチしている場合、バックグラウンド キューで時間のかかる作業を行っていることを示唆しているということです。その場合、強い参照を保持することを控えるのself
が賢明かもしれません。このコードを実行している場所のより広いコンテキストを見ずして、何とも言えません。