アプリを初めてロードするときにいくつかの大きな csv ファイルをロードしていますが、これはシミュレーターでは正常に動作しますが、電話で実行すると、「プログラムがシグナル "0" を受信しました」というメッセージで約 30% クラッシュします。メモリクラッシュ。ただし、didReceiveMemoryWarning イベントにブレークポイントを設定すると、呼び出されないようです。
何か不足していますか、それともイベントが呼び出されずにプログラムが正常にシャットダウンしますか?
アプリを初めてロードするときにいくつかの大きな csv ファイルをロードしていますが、これはシミュレーターでは正常に動作しますが、電話で実行すると、「プログラムがシグナル "0" を受信しました」というメッセージで約 30% クラッシュします。メモリクラッシュ。ただし、didReceiveMemoryWarning イベントにブレークポイントを設定すると、呼び出されないようです。
何か不足していますか、それともイベントが呼び出されずにプログラムが正常にシャットダウンしますか?
アプリのメイン スレッドの同期呼び出しでファイルを読み込んでいる場合、同期呼び出しが完了する前に他のメッセージ (メモリ警告など) を受信できなくなります。CSV ファイルの読み込みを非同期タスクにしてみてください。(良い出発点は を読むことNSOperation
です。) これにより、アプリは読み込みプロセス中にメモリ警告を受け取ることができます。
代わりに小さな csv を読み込もうとするとどうなりますか。正常に動作する場合は、csv が大きすぎてメモリの問題が発生しています。その場合、csv ファイルをチャンクごとに読み取り、新しいファイルを読み取る前に古いファイルのメモリを解放する必要がある場合があります。