Мое приложение создает экземпляры пользовательского подкласса UIView и добавляет эти экземпляры, расположенные горизонтально рядом друг с другом. Когда создается новый экземпляр моего класса UIView, я могу добавить его в UIScrollView и сбросить размер содержимого. Затем я звоню [UIScrollView setContentOffset:(some point) animated:NO]
. Это прекрасно работает. Проблема в том, что когда я вызываю вышеупомянутый метод с анимацией, то есть [UIScrollView setContentOffset:(some point) animated:YES]
, приложение вылетает. Стек вызовов выглядит так:
> #0 0x3145b870 in ___forwarding___ ()
> #1 0x313b6650 in _CF_forwarding_prep_0 ()
> #2 0x317d84a2 in -[UIAnimator stopAnimation:] ()
> #3 0x317d84a2 in -[UIAnimator stopAnimation:] ()
> #4 0x317d7f0e in -[UIAnimator(Static) _advance:withTimestamp:] ()
> #5 0x317d7e00 in -[UIAnimator(Static) _LCDHeartbeatCallback:] ()
> #6 0x3531d86e in CA::Display::DisplayLink::dispatch(unsigned long long, unsigned long long) ()
> #7 0x3531d7c4 in CA::Display::IOMFBDisplayLink::callback(__IOMobileFramebuffer*,
> unsigned long long, unsigned long long, unsigned long long, void*) ()
> #8 0x33a56000 in IOMobileFramebufferVsyncNotifyFunc ()
> #9 0x36e3c60c in IODispatchCalloutFromCFMessage ()
> #10 0x31422f12 in __CFMachPortPerform ()
> #11 0x3142d522 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
> #12 0x3142d4c4 in __CFRunLoopDoSource1 ()
> #13 0x3142c312 in __CFRunLoopRun ()
> #14 0x313af4a4 in CFRunLoopRunSpecific ()
> #15 0x313af36c in CFRunLoopRunInMode ()
> #16 0x32888438 in GSEventRunModal ()
> #17 0x316b4cd4 in UIApplicationMain ()
Когда я включаю Zombies, вывод приложения производит:
*** -[__NSArrayM removeObject:]: message sent to deallocated instance 0x113dbb10
Дополнительная информация: делегат UIScrollView никогда не устанавливается. Я использую АРК.