Лучше удалить MKAnnotations или нет?

Лучше ли с точки зрения управления памятью, времени автономной работы и использования процессора удалить невидимые в настоящее время MKAnnotations из MKMapView или нет?

Я говорю о БОЛЬШОМ количестве аннотаций (скажем, ~ 1000), из которых только около 20 видны в текущем регионе в любой момент времени. Должен ли я позволить MapKit делать свою работу по сокрытию булавок или я должен сам обрабатывать добавление/удаление аннотаций в зависимости от видимой области?


person WASD42    schedule 04.02.2011    source источник


Ответы (2)


Аннотации, которые находятся за пределами экрана, не вызовут большого использования памяти. MKAnnotation разработан, чтобы быть очень легким, и вы должны стараться, чтобы они были маленькими. Пожиратель памяти — связанное представление (MKAnnotationView). Если у вас более нескольких сотен видимых, это приведет к замедлению работы и использованию большого объема памяти с возможным сбоем на старых устройствах. 1000 замедлит работу любого устройства, но, вероятно, не приведет к его поломке.

Подводя итог, закадровые аннотации не имеют значения. Проблемы возникают, когда у вас слишком много изображений на экране. Для этого вам нужно удалить аннотации, чтобы повысить производительность. Как вы решите удалить и заменить аннотации — гораздо более сложный вопрос.

person nevan king    schedule 04.02.2011
comment
Спасибо, неван! Говоря об удалении и замене аннотаций - я работаю над процедурой кластеризации, поэтому и задал этот вопрос... Что мне делать с сгруппированными маркерами вне экрана? Теперь я думаю, что будет нормально просто разгруппировать их, не удаляя :) - person WASD42; 04.02.2011
comment
Если группировка не займет слишком много времени, я бы просто сгруппировал их все (даже закадровые). Таким образом, вам не придется думать, как обрабатывать группы, обрезанные краями экрана. Это также означает, что вам не нужно создавать дополнительные группы при перемещении карты. - person nevan king; 04.02.2011

Я бы обязательно показывал не более 100 аннотаций одновременно. Когда вы позволяете MKMapView справиться с этим, как вы мешаете пользователю уменьшать масштаб до всего мира, заставляя mapView отображать все ваши 1000 аннотаций?

person Ortwin Gentz    schedule 04.02.2011
comment
На самом деле это проблема, над которой я работаю, пытаясь сгруппировать аннотации при уменьшении масштаба, как в родном приложении «Фотографии» :) На самом деле, я уже могу группировать и разгруппировать их с красивой анимацией, но я думаю о том, что делать с группировкой вне экрана. аннотации... - person WASD42; 04.02.2011
comment
@WASD42: Интересно. Просто любопытно: какой алгоритм группировки вы используете? - person Ortwin Gentz; 07.02.2011