UIScrollView内部一致性崩溃

时间:2014-09-29 15:43:34

标签: ios objective-c iphone uitableview uiscrollview

我在UITableView上遇到UICollectionViews这个间歇性崩溃问题。

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

  1. 包含3个部分的UITableView
  2. 每个部分都有一行
  3. 每行都有一个UICollectionView
  4. UITableView的顶行(这是一个集合视图)可以根据NSTimer自动滚动。
  5. 当我推入导航控制器并来回弹出时发生崩溃。这种情况发生在我推动和弹出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
    

1 个答案:

答案 0 :(得分:25)

我认为在处理过渡动画时,iOS 8上有一个关于UITableViewController(或UIViewController包含UITableViewdealloc dealloc的时间安排的错误。不知何故,视图控制器已经被取消分配,但表格视图仍在尝试向其委托发送消息。

作为一种变通方法,您可以在UITableViewController上实施- (void)dealloc { self.tableView.delegate = nil; self.tableView.dataSource = nil; } 方法,如下所示:

{{1}}