UIScrollView _delegateScrollViewAnimationEnded崩溃

时间:2015-08-19 17:10:55

标签: ios objective-c uiscrollview

我在UIScrollView中看到崩溃,因为在scrollView完成动画之前代理已从内存中释放。

我知道这是原因,解决方案应该是当委托命中自己的dealloc调用时手动取消UIScrollView的委托。我已经完成了每个viewController,我可以找到它有一个UIScrollView子视图,但崩溃仍然存在。我知道根本原因是UIScrollView的委托是分配而不是弱,我很好奇我是否可以某种方式覆盖它(通过类别?)。

还有其他解决方案吗?

这是崩溃的转储,我发现好奇的是堆栈上的一个调用引用了UITextView(它继承自UIScrollView),这是否能提供有关违规UIScrollView位置的线索?

Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0xc1a9e521
0 libobjc.A.dylib objc_msgSend + 5 respondsToSelector:
1 UIKit  -[UIScrollView(UIScrollViewInternal) _delegateScrollViewAnimationEnded] + 52
2 UIKit  -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded:finished:] + 184
3 UIKit  -[UITextView _scrollViewAnimationEnded:finished:] + 306
4 UIKit  -[UIAnimator stopAnimation:] + 476
5 UIKit  -[UIAnimator(Static) _advanceAnimationsOfType:withTimestamp:] + 304
6 UIKit  -[UIAnimator(Static) _LCDHeartbeatCallback:] + 52
7 QuartzCore CA::Display::DisplayLinkItem::dispatch() + 98
8 QuartzCore CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 366
9 IOMobileFramebuffer IOMobileFramebufferVsyncNotifyFunc + 90
10 IOKit IODispatchCalloutFromCFMessage + 256
11 CoreFoundation __CFMachPortPerform + 132
18 UIKit    UIApplicationMain + 1440

1 个答案:

答案 0 :(得分:0)

这可能与以下问题相同。 基本上在UIScrollView

中将delegate' s nil设为dealloc

Unable to find reason for Crash on -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded:finished:]