2014-09-29 53 views
12

我在我的UITableView有UICollectionViews這個間歇性崩潰問題掙扎。UIScrollView內部一致性崩潰

我有一個導航控制器,其根視圖控制器具有:

  1. 的UITableView用3段
  2. 每個部分具有一個排
  3. 每一行具有UICollectionView
  4. 的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 

回答

24

我覺得有一個錯誤的地方在iOS 8關於UITableViewController(或純UIViewControllerUITableViewdealloc時的時序處理過渡動畫。不知怎的,視圖控制器已經解除分配,但表視圖仍然試圖將消息發送到其代表

作爲一種變通方法,可以實現對UITableViewController這樣的dealloc方法:

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

此錯誤不只是在iOS8上存在的。我從iOS8.1.3和iOS7.1.2,iPad 2和iPad Mini獲得Crashlytics報告。但確實有90%的iOS8。由於該異常不會拋出我的設備和我的模擬器,因此我需要等待另一個App Store發行版來驗證這是否確實修復了錯誤。 – 2015-02-03 17:30:39

+1

@RobvanderVeer你爲什麼不把你的應用程序配置文件和檢查殭屍?或者,您可以在斷開連接的iPhone上運行應用程序 - 使應用程序崩潰,然後再連接,從Xcode打開設備,並且您應該能夠看到崩潰日誌。 – 2015-03-10 06:14:14

+1

謝謝@IslamQ,我設法通過在滾動視圖上滾動來重現崩潰,然後快速切換視圖。我最近的更新包括dealloc修復所有我的tableView視圖控制器和所有相關的崩潰已經消失,包括iOS7,8,8.1和8.2beta – 2015-03-11 09:03:05