Не удалось найти причину сбоя - [UIScrollView (UIScrollViewInternal) _scrollViewAnimationEnded: завершено:] - программирование
Подтвердить что ты не робот

Не удалось найти причину сбоя - [UIScrollView (UIScrollViewInternal) _scrollViewAnimationEnded: завершено:]

В моем приложении много сообщений со следующим журналом сообщается очень часто, но даже с несколькими тестовыми устройствами и версиями iOS я не могу воспроизвести его. Поэтому нет способа найти причину на Xcode. Поскольку нет следа в следе, это приводит к моему коду, я не могу представить, как можно найти его происхождение. Само приложение очень сложное, и, конечно же, используются многие прокрутки, также встроенные.

Есть ли у кого-нибудь идея, с чего начать искать? Или у кого-то была аналогичная проблема раньше?

Я очень благодарен за любую помощь!

С уважением, Флориан

OS Version:      iPhone OS 6.0.1 (10A523)
Report Version:  104

Exception Type:  SIGSEGV
Exception Codes: SEGV_ACCERR at 0xd1d28fbc
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                     0x392e65b0 objc_msgSend + 16
1   UIKit                               0x35a839f7 -[UIScrollView(UIScrollViewInternal)  _scrollViewAnimationEnded:finished:] + 135
2   UIKit                               0x35a838e9 -[UIAnimator stopAnimation:] + 469
3   UIKit                               0x35b1e257 -[UIAnimator(Static) _advanceAnimationsOfType:withTimestamp:] + 295
4   UIKit                               0x35a83381 -[UIAnimator(Static) _LCDHeartbeatCallback:] + 53
5   QuartzCore                          0x323d3071 CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) + 161
6   QuartzCore                          0x323d2fc9 CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*, unsigned long long, unsigned long long, unsigned long long, void*) + 65
7   IOMobileFramebuffer                 0x340befd7 IOMobileFramebufferVsyncNotifyFunc + 155
8   IOKit                               0x35ee8449 IODispatchCalloutFromCFMessage + 193
9   CoreFoundation                      0x339605db __CFMachPortPerform + 119
10  CoreFoundation                      0x3396b173 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35
11  CoreFoundation                      0x3396b117 __CFRunLoopDoSource1 + 139
12  CoreFoundation                      0x33969f99 __CFRunLoopRun + 1385
13  CoreFoundation                      0x338dcebd CFRunLoopRunSpecific + 357
14  CoreFoundation                      0x338dcd49 CFRunLoopRunInMode + 105
15  GraphicsServices                    0x33f222eb GSEventRunModal + 75
16  UIKit                               0x3596a2f9 UIApplicationMain + 1121
17                                 0x00005233 main (main.m:14)
4b9b3361

Ответ 1

У меня была такая же авария. Это оказалось потому, что мы анимировали контроллер с помощью [controller setContentOffset: newPt animated: YES], и мы реализовали метод делегирования scrollViewDidScroll на контроллере. Нажатие кнопки на экране позволяет перейти на другой контроллер, поэтому, если пользователю удастся щелкнуть по кнопке во время анимации, мы попали бы в исходную поломку. Решение состоит в том, чтобы просто делегировать делегат в noalloc.

Ответ 2

Сигнал SIGSEGV отправляется процессу, когда он делает неверную ссылку на виртуальную память или ошибку сегментации. (см. Wikipedia)

Итак, вы получаете доступ к объекту, который, вероятно, был выпущен. Как это во время анимации, может быть, вы определили селектор, который будет вызываться после завершения анимации или что-то в этом роде? Это было бы, если бы я начал искать.