2017-03-01 9 views
1

私はSkobbler Map Framework(SKMaps)を使ってiOSアプリを持っています。私はそれが多くのメモリを使用することがわかった。私がmapViewを追加したUIViewControllerは既にmapViewなしでは重いですが、SKMapsフレームワークバージョン2.5.1では正常に動作していました。私はライトマップを使用していました。SKMaps、iOSからメモリ警告を受け取ったときに地図データのメモリ内キャッシュをクリアするには?

現在、3.0のライトマップは使用できなくなり、フルマップを使用する必要があります。現在、かなりのユーザーがナビゲート中にクラッシュを報告しています(10分後、時には3時間後など)。 (多くの)分析が判明した後、これらはメモリに関連しています(私のアプリはJetsamEventのログで理由「vnode-limit」で表示されます)。

私は自分のアプリケーション要素とデータ構造からすべてを取り除いていますが、SKMapsフレームワークはアプリの総メモリ使用量の85%に似ています。私もdidReceiveMemoryWarningを実装して、自分の要素にできることを追加しました。私は楽器とXcode 8メモリグラフを使って多くのメモリ解析を行いました。リークは見つかりませんでした。

私の推測では、それはフルマップと2.5.1のライトマップに関連していると思います。

メモリ警告を受け取ったときにSKMapsのメモリ内キャッシュを消去(または削減)する方法はありますか?

答えて

1

デバイスにキャッシュされているマップタイルのサイズによって問題が発生する可能性があります。この場合、SKTilesCacheManagerクラスが役立ちます。これは、タイルキャッシング機構の高度な管理を提供します。

+0

こんにちはエイドリアン。 SKTilesCacheManagerは、DISK(メモリにキャッシュされていないタイルではない)のキャッシュのサイズを管理します。 didReceiveMemoryWarningのSKMapsService.sharedInstance()。tilesCacheManager.deleteAllCache()を実行しても、アプリケーションの現在のメモリフットプリントには何の影響もありません(これをテストしました)。 SKTilesCacheManagerのすべてのプロパティとメソッドが、メモリキャッシュではなくDISKキャッシュに適用されます(どこにでも明示的には記載されていませんが)。あるいは私は誤解していますか? – guido

関連する問題