在滚动表格视图时点按“后退”按钮时,应用程序崩溃

我在导航视图中使用“后退”按钮显示模态表视图。 后退按钮向模态视图的委托发送消息以关闭模态视图。 如果我滚动表格视图,然后在表格视图仍在滚动时点击导航栏上的“返回”按钮,则应用程序会崩溃并显示以下消息:

*** -[UILayoutContainerView setUseFastMode:]: message sent to deallocated instance 0xef74650 

当我PO 106ef74650我得到这个:

 (int) $1 = 251086416 [no Objective-C description available] 

以前有人经历过吗? 解决方法或修复方法是什么?

我相信这是iOS 5.1中的一个错误,当动画解雇当前正在滚动的模态时会发生这种错误。 我收到用户的报告说我的应用程序崩溃了,当我调查时我遇到了同样的错误。

我创建了一个具有最少量代码/视图的新项目,并且能够重现此崩溃。 到目前为止,我发现的唯一解决方法是在解除模态时禁用动画。 我已经向Apple提交了一份错误报告。

我遇到了类似的问题,如果表格仍在滚动,我的应用程序崩溃了,我触发了一个模态视图显示在表格上方。 我的实例中的崩溃被抛入cellForRowAtIndexPath ,indexPath已被释放。

我通过在viewWillDisappear方法中停止滚动来修复它: –

 - (void) viewWillDisappear:(BOOL)animated { [self.tableView setContentOffset:self.tableView.contentOffset animated:NO]; } 

希望这可能有助于研究相关问题的人!

iOS 5在UIView上的FastModeAdditions类别中有一个错误。 如果您在与模式视图控制器被关闭的同一个运行循环中滚动滚动视图的子视图,则会显示此错误。

  Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0xa0000008 Crashed Thread: 0 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libobjc.A.dylib 0x34bdef78 objc_msgSend + 16 1 UIKit 0x35309f9e -[UIView(FastModeAdditions) _setContainerLayoutViewForFastMode:] + 98 2 UIKit 0x351701cc -[UIView dealloc] + 568 3 UIKit 0x3545a39e -[UIDropShadowView dealloc] + 86 4 libobjc.A.dylib 0x34be016e _objc_rootRelease + 30 5 CoreFoundation 0x32b882e0 CFRelease + 88 

我们找到的最好的工作是执行Selector:afterDelay:解雇。 这会强制在稍后的运行循环中解除,并且不再发生崩溃。

在iOS 6上不会发生这种情况。

检查setUseFastMode:确保您没有发布以后尝试访问的内容。

 [someObject release]; 

当点击模态内部的按钮时,我正在解雇一个模态,如果它的表仍在滚动,则会导致崩溃。 这是不正确的:在将解除代码移动到呈现视图控制器并将其作为委托方法的一部分调用之后,不再发生崩溃。

这对我有用:

 NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0] [self.tblChildProducts scrollToRowAtIndexPath:myIP atScrollPosition:UITableViewScrollPositionTop animated:NO] [self dismissModalViewControllerAnimated:YES] 

@Slee于2012年 5月24日11:18