`[MKAnnotationView setBounds:]` имеет проблему снижения производительности в iOS SDK 15

#ios #performance #mapkit #mkannotationview

Вопрос:

  • Я создал настраиваемое представление аннотаций , расширив MKAnnotationView и переопределив [MKAnnotationView setImage:] метод.
  • Когда [MKAnnotationView setImage:] вызывается метод, [MKAnnotationView setBounds:] вызывается и, таким образом [MKAnnotationView _metricsDidChange] , вызываются и некоторые другие методы.
  • Я вижу, что [MKAnnotationView _metricsDidChange] это узкое место для проблемы производительности.
  • В то время как в SDK 14 такой метод не вызывается.

Прикрепите скриншот профиля времени ниже:

SDK14: введите описание изображения здесь

SDK15: введите описание изображения здесь

Ответ №1:

Временное исправление

Я искал, но безуспешно, чтобы найти какие-либо официальные материалы.

Наконец, я нашел обходной путь, чтобы убедиться, что SDK не будет вызывать [MKAnnotationView setBounds:] [MKAnnotationView setImage:] метод:

  • установите MWAnnotationView рамку (используя размер изображения), прежде чем устанавливать изображение на нее.

Дома это помогает.