我在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
答案 0 :(得分:0)
这可能与以下问题相同。
基本上在UIScrollView
delegate
' s nil
设为dealloc