かなり大きなコードセットのどこかにスレッドセーフティバグがあります。私のCATiledLayer
を数秒間シミュレータでスクロールするだけで、ランダムなクラッシュとして再現できます。また、私の描画コードを単一のスレッドにロックすることで解決できます(CATiledLayerはマルチスレッドと私の描画であるためコードが必要なほど遅い)。iOSでのスレッドの安全性の問題のデバッグ
スレッドセーフティの問題をデバッグするにはどうすればよいですか?私はそれが描画されているデータを遅れて取得(およびキャッシュ)するのは私のコードのどこかにあると思われますが、それはあまり絞り込まれません。
私は「並列プログラミングガイド」を読み飛ばしましたが、デバッグについては何も話していませんが、コードの構造を説明しています。
"描画中のデータを遅延読み込み(キャッシュ)する"コードを、単純に回転して静的なイメージを返す単純なコードに置き換えますか? –
データは数ギガバイトのベクトルデータ(マップ)です。私はそれをRAMにすべて保存することはできませんし、ベクターの代わりにビットマップイメージであれば、iOSデバイスにも適合しません。 –
実際のデータを返す必要はありません。ダミーデータを返す*シンプル*メソッドでなければなりません(理想的には、実際のデータを返す時間/ CPUとほぼ同じくらい時間がかかります)。 –