私は、dispatch_async とブロックを使用して、3 秒ごとにサーバー データを取得しています。ビューが消えるか、ユーザーがプログラムをシャットダウンする方法は何ですか?
非同期ブロックが時々チェックするのはブール値のフラグでしょうか? その場合、非同期ブロックがスリープしている間にビューが終了するとどうなりますか?
私は、dispatch_async とブロックを使用して、3 秒ごとにサーバー データを取得しています。ビューが消えるか、ユーザーがプログラムをシャットダウンする方法は何ですか?
非同期ブロックが時々チェックするのはブール値のフラグでしょうか? その場合、非同期ブロックがスリープしている間にビューが終了するとどうなりますか?
ディスパッチ コールを簡単にキャンセルすることはできないため、代わりにに移動することをお勧めしますNSOperation
。WWDC 2012、 Session 211 - Building Concurrent User Interfaces on iOSからの非常に関連性の高いビデオがあり、あなたが説明した種類の問題を正確にカバーしています。絶対に見ることをお勧めします。
基本的なアプローチはNSBlockOperation
、プロパティ自体をチェックして、-isCancelled
キャンセルされた場合に早期に戻ることができる を作成することです。その後、 で操作をキャンセルできますviewDidDisappear
。
別のアプローチは、NSTimer
簡単に無効化/キャンセルできるものを使用することです。これは、コードが何を行っているかの説明を考えると、実際には最も簡単な解決策かもしれません。