Я вижу странное падение в одном из моих приложений, которое, похоже, происходит из-за закрытого метода в UIAlertView. Я просмотрел некоторые поиски и нашел несколько других ссылок на этот метод, связанных с сбоями, таких как здесь , но я не уверен, что причина та же. Однако, чтобы быть уверенным, убедитесь, что я всегда устанавливаю делегат UIAlertView равным nil всякий раз, когда делегат освобождается.
Трассировка стека выглядит следующим образом:
Exception Type: SIGABRT
Exception Codes: #0 at 0x351ce32c
Crashed Thread: 0
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x351ce32c __pthread_kill + 8
1 libsystem_c.dylib 0x370c329f abort + 95
2 eLogbook 0x000bbacd -[GetOperationPartsDictionary init] (GetOperationPartsDictionary.m:22)
3 UIKit 0x32557f93 -[UIAlertView(Private) _popoutAnimationDidStop:finished:] + 855
4 UIKit 0x3240dc53 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 471
5 UIKit 0x3241357d -[UIViewAnimationState animationDidStop:finished:] + 53
6 QuartzCore 0x36eeac2f CA::Layer::run_animation_callbacks(void*) + 203
7 libdispatch.dylib 0x3140ae91 _dispatch_main_queue_callback_4CF$VARIANT$up + 197
8 CoreFoundation 0x353ad2ad __CFRunLoopRun + 1269
9 CoreFoundation 0x353304a5 CFRunLoopRunSpecific + 301
10 CoreFoundation 0x3533036d CFRunLoopRunInMode + 105
11 GraphicsServices 0x3662c439 GSEventRunModal + 137
12 UIKit 0x32426e7d UIApplicationMain + 1081
13 eLogbook 0x0007767f main (main.m:14)
Что меня действительно смущает, так это то, что -[UIAlertView(Private) _popoutAnimationDidStop:finished:]
метод вызывает метод init для моего класса GetOperationPartsDictionary. Из-за ограниченного количества информации, которую я получил от пользователей, этот сбой происходит при запуске, и в этот момент этот класс не был бы загружен.
Я использую QuincyKit для доставки отчетов о сбоях на сервер, оттуда они обозначаются стандартным скриптом symbolicatecrash. Версия Xcode, используемая для обозначения сбоя, является той же версией, которая использовалась для построения двоичного файла, и я уверен, что dSYM, используемый для обозначения сбоя, является верным - например, номера строк для моего кода верны .
У кого-нибудь есть мысли по этому поводу?
Редактировать: следовало добавить, что это происходит в поле с живым приложением, но только изредка. Возможно, это затронуло 1 или 2 пользователя из тысячи или около того, но я никогда не мог воспроизвести его ни на устройстве, ни в симуляторе.