Как очистить кэш листов карты в MKMapView? - PullRequest
7 голосов
/ 07 декабря 2010

Я работаю над картографическим приложением для iPhone / iPad на основе MKMapView, которое перекрывает мою базовую базовую карту, обеспечивая некоторые ограниченные функциональные возможности, даже когда пользователи находятся в автономном режиме и не могут получить доступ к серверу плиток карты Google.работает - но мне трудно тестировать его после каждой новой сборки, потому что я не могу найти способ очистить / сбросить кэш тайла карты iOS.Кэш iOS даже выдерживает цикл питания и перезагрузку устройства iOS.Везде, где я использовал масштабирование в прошлом, отображаются фрагменты в памяти предыдущего сеанса тестирования.

Есть ли способ заставить iOS сбросить кэш карты?Прямо сейчас единственная альтернатива, о которой я могу подумать, это перепрошивать ОС каждый раз, когда мне нужно сделать тест.

Спасибо!

Кстати: это почти дубликат этого вопроса, но в этом случае проблема была не в тестировании с пустым кешем, а в освобождении памяти.Принятый ответ, приведенный там, сфокусирован на проблеме с ОЗУ, а не на той, что у меня возникает здесь.

Ответы [ 3 ]

5 голосов
/ 24 апреля 2011

Попробуйте установить NSURLConnection размер кэша на ноль, прежде чем создавать какой-либо экземпляр вашего MKMapView

    NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];

. Это может привести к тому, что ваши подключения прекратят хранить кэшированные данные, так как оставшегося размера кэша всегда будет недостаточно

1 голос
/ 03 сентября 2015

Мы не нашли способ очистить кэш MKMapView из приложения, но вы можете «Сбросить весь контент и данные» в «Настройки \ Общие \ Сброс».Хотя это не идеально, это гораздо быстрее, чем «перепрошивка ОС», на самом деле это занимает всего несколько минут.После сброса вы также настроили устройство и перезагрузили приложение, но это также занимает еще несколько минут.

1 голос
/ 05 марта 2011

Я наткнулся на этот вопрос, и это, безусловно, интересная проблема.Ясно, что MKMapView сохраняет плитки на диск где-то (потому что он переживает перезагрузку).Интересно, будет ли потенциальное решение: 1) определить местоположение сохраненных кэшированных плиток, а затем 2) программно удалить этот кеш при запуске приложения.Для этого потребуется взломанное устройство, чтобы предоставить вам доступ к файлам вне изолированной программной среды приложения.Очевидно, что он не подходит для распространения, но для тестирования, вероятно, будет приемлемым.

Тем не менее, когда у меня возникла эта проблема, я в итоге просто реализовал свой собственный мозаичный вид карты и запустил тест на достижимость, чтобы определить, отображать ли карту Googleили мой автономный режим.

...