2017-03-01 61 views
1

我有一個使用Skobbler地圖框架(SKMaps)的iOS應用程序。我發現它使用了很多內存。當然,UIViewController我添加mapView很沉重,如果沒有mapView,但它在SKMaps框架版本2.5.1中工作正常。我正在使用光照貼圖。SKMaps,當從iOS接收到內存警告時清除內存中緩存地圖數據的方法?

現在,由於3.0光照貼圖不再可用,我必須使用完整的地圖。現在很多用戶報告導航時崩潰(有時在10分鐘後,有時在3小時後等)。經過(很多)分析後發現這些內存相關(我的應用程序顯示爲JetsamEvent日誌中的最大進程,原因是「vnode-limit」)。

我已經剝去約從我自己的應用程序元素和數據結構的一切我可以,但SKMaps框架是我的應用程序的總內存使用的還是喜歡85%。我也實施了didReceiveMemoryWarning,並增加了我可以用於我自己的元素。我還用儀器和Xcode 8內存圖做了大量的內存分析。沒有發現泄漏。

我的猜測是,它關係到全圖VS 2.5.1光照貼圖。

有沒有辦法在收到內存警告清除(或減少)SKMaps的內存緩存?

回答

1

緩存設備上可能導致問題的地圖瓦片的大小。在這種情況下,SKTilesCacheManager類可能會幫助你。它爲tile緩存機制提供了高級管理。

+0

嗨阿德里安。 SKTilesCacheManager管理DISK上緩存的大小(不是內存緩存切片)。在didReceiveMemoryWarning中執行SKMapsService.sharedInstance()。tilesCacheManager.deleteAllCache()不會影響應用程序當前的內存佔用(我測試過)。據我所知(雖然沒有明確提到的地方),SKTilesCacheManager中的所有屬性和方法都適用於DISK緩存,而不是內存緩存。或者我誤解了? – guido