Я создал приложение, предназначенное для отображения некоторых оверлеев.Наложения имеют форму многоугольников с количеством точек на внешнем кольце до 10000.Но большое количество очков здесь не является проблемой.В последние несколько дней я продолжал упрощать свое приложение, просто чтобы найти себя с простым представлением, содержащим MapView.Представление загружается из xib (с подключенными розетками и делегатом).Наложение создается в методе - (void) mapView: (MKMapView *) mapView regionDidChangeAnimated: (BOOL) анимируется и добавляется в mapView.
Демонстрация (которая доступна здесь https://github.com/nebucaz/mapkit) показываетMapView и добавляет красный треугольник при увеличении / уменьшении или панорамировании карты. При масштабировании и панорамировании (интенсивно и быстро) MapView происходит сбой приложения. Имитировать симулятор легко, на устройстве это значительносложнее, даже если это возможно (я могу предоставить краш-журнал).
Есть две демонстрации: MapCrash и MapCrashStatic. Первая создает несколько полигонов вокруг карты в зависимости от того, где одна панорама / масштабирование. Вторая имеет толькоодин статический многоугольник, который создается в - (void) viewDidLoad, а затем добавляется при каждом вызове mapView regionDidChangeAnimated
Приложение всегда падает со следующей обратной трассировкой:
Attaching to process 8745.
MapCrash(8745) malloc: protecting edges
[Switching to process 8745 thread 0x1820b]
[Switching to process 8745 thread 0x1820b]
(gdb) backtrace
#0 0x00000000 in ?? ()
#1 0x00e81a60 in CG::Path::apply_transform ()
#2 0x00ed741c in CGPathCreateMutableCopyByTransformingPath ()
#3 0x00f50d23 in CGContextAddPath ()
#4 0x000f11dc in MKRoadWidthAtZoomScale ()
#5 0x000ee498 in MKMapRectRemainder ()
#6 0x000fab01 in MKTilesRequireGoogleLegalNotices ()
#7 0x02723c17 in -[CALayer drawInContext:] ()
#8 0x027407e3 in tiled_layer_render ()
#9 0x0265b127 in CAImageProviderThread ()
#10 0x01eb04e6 in _dispatch_worker_thread2 ()
#11 0x98f44b24 in _pthread_wqthread ()
#12 0x98f466fe in start_wqthread ()
(gdb)
Обратной трассировкой являетсявсегда один и тот же, он падает в одной и той же точке кода библиотеки. Я анализировал с помощью инструментов(зомби, утечки, выделения), а также сделал некоторые испытания с чрезмерно удержанными объектами.Я предполагал, что это проблема памяти, но я еще не смог запустить Malloc Guard.Авария может быть воспроизведена на нескольких машинах - даже если я просто переустановил Xcode-tools.
Другие публикации на stackoverflow.com также имеют дело с внезапным сбоем в MapKit, но либо не предлагают прямого решения моей проблемы, либодолжен был иметь дело с делегатом и другими проблемами перехода-представления или запуска / остановки приложения.ARC отключен в моих проектах.
Я охотюсь на этот сбой уже более недели, все еще предполагая, что я неверно истолковал демонстрацию KMLViewer (Apple) или что-то сделал не так (Кредиты другим разработчикам iOS в моем районе!)
Тем не менее, я был бы признателен за ваши предложения и помощь в этом вопросе.