Ios UIScrollView内部一致性崩溃

Ios UIScrollView内部一致性崩溃,ios,objective-c,iphone,uitableview,uiscrollview,Ios,Objective C,Iphone,Uitableview,Uiscrollview,我正在努力解决UITableView(具有UICollectionViews)上的间歇性崩溃问题 我有一个导航控制器,其根视图控制器具有: UITableView包含3个部分 每个部分有一行 每行都有一个UICollectionView UITableView(集合视图)的顶行根据NSTimer自动滚动 当我推入导航控制器并来回弹出时,会发生崩溃。它发生在我推和弹出3-4次的时候 跟踪: Thread 0 Crashed: 0 libobjc.A.dylib

我正在努力解决UITableView(具有UICollectionViews)上的间歇性崩溃问题

我有一个导航控制器,其根视图控制器具有:

  • UITableView包含3个部分
  • 每个部分有一行
  • 每行都有一个UICollectionView
  • UITableView(集合视图)的顶行根据NSTimer自动滚动
  • 当我推入导航控制器并来回弹出时,会发生崩溃。它发生在我推和弹出3-4次的时候

    跟踪:

    Thread 0 Crashed:
    0   libobjc.A.dylib                 0x38f74626 objc_msgSend + 6
    1   UIKit                           0x312a6740 -[UIScrollView(UIScrollViewInternal) _notifyDidScroll] + 60
    2   UIKit                           0x31020798 -[UIScrollView setContentOffset:] + 600
    3   UIKit                           0x312a76b6 -[UIScrollView(UIScrollViewInternal) _adjustContentOffsetIfNecessary] + 1394
    4   UIKit                           0x310d33d2 -[UIScrollView(UIScrollViewInternal) _stopScrollingNotify:pin:tramplingDragFlags:] + 414
    5   UIKit                           0x310d322a -[UIScrollView(UIScrollViewInternal) _stopScrollingNotify:pin:] + 26
    6   UIKit                           0x310d31e2 -[UIScrollView removeFromSuperview] + 26
    7   UIKit                           0x31001952 -[UIView dealloc] + 374
    8   CoreFoundation                  0x2e700140 CFRelease + 556
    9   CoreFoundation                  0x2e70b668 -[__NSArrayM dealloc] + 156
    10  libobjc.A.dylib                 0x38f79b66 objc_object::sidetable_release(bool) + 170
    11  libobjc.A.dylib                 0x38f7a0ce (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 354
    12  CoreFoundation                  0x2e70347c _CFAutoreleasePoolPop + 12
    13  CoreFoundation                  0x2e798f0e __CFRunLoopRun + 1310
    14  CoreFoundation                  0x2e703724 CFRunLoopRunSpecific + 520
    15  CoreFoundation                  0x2e703506 CFRunLoopRunInMode + 102
    16  GraphicsServices                0x336726ce GSEventRunModal + 134
    17  UIKit                           0x3106486c UIApplicationMain + 1132
    18  BoatSenzeDev                    0x00110648 main (main.m:16)
    19  libdyld.dylib                   0x39468ab4 start + 0
    

    我认为iOS 8在处理过渡动画时,关于
    UITableViewController
    (或包含
    UITableView
    )的普通
    UIViewController
    )的计时方面存在缺陷。不知何故,视图控制器已解除分配,但表视图仍在尝试向其委托发送消息

    作为一种解决方法,您可以在
    UITableViewController
    上实现
    dealloc
    方法,如下所示:

    - (void)dealloc
    {
        self.tableView.delegate = nil;
        self.tableView.dataSource = nil;
    }
    

    这个bug不仅仅发生在iOS8中。我从iOS8.1.3和iOS7.1.2、iPad2和iPadMini上收到了关于这方面的Crashlytics报告。但90%的损失确实是8。因为异常不会在我的设备和模拟器上引发,所以我需要等待另一个应用商店版本来验证这是否确实修复了错误。@RobvanderVeer为什么不使用工具分析应用程序并检查僵尸?或者你可以在断开连接的iPhone上运行应用程序-使你的应用程序崩溃,然后重新连接,从Xcode打开设备,你应该能够看到崩溃日志。感谢@IslamQ,我通过在scrollview上大量滚动,然后快速切换视图,成功重现了崩溃。我的上一次更新包括所有tableView控制器上的dealloc修复,所有相关的崩溃都已消失,包括iOS7、8、8.1和8.2beta通过Crashlytics(iOS7和iOS8)获得相同的报告,但我自己没有经历过崩溃。我实现了这个dealloc方法,希望它能解决这个问题。我正在最新的iPod上安装它们,但不是在任何iPhone上。