UITableViewDelegate崩溃

时间:2017-02-21 11:50:10

标签: ios swift uitableview

我有一些视图控制器,里面有UITableView。他们都有基类 - BaseTableViewController

BaseTableViewController实现了一些UITableViewDelegate逻辑,因此它也有一些存根委托方法,特别是对于行选择:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}

你可以看到它的空方法,所以子类不会调用它。 但Crashlytics的崩溃报告告诉我,这种方法正在崩溃。我不能自己复制它:

#0. Crashed: com.apple.main-thread
0  libswiftCore.dylib             0x100e88a18 _TFs16_assertionFailedFTVs12StaticStringSSS_Su5flagsVs6UInt32_Os5Never + 164
1  MyApp                          0x10028ae14 BaseTableViewController.tableView(UITableView, didSelectRowAt : IndexPath) -> () (BaseTableViewController.swift)
2  UIKit                          0x190f2bd30 -[UIApplication sendAction:to:from:forEvent:] + 96
3  UIKit                          0x190f2bcb0 -[UIControl sendAction:to:forEvent:] + 80
4  UIKit                          0x190f16128 -[UIControl _sendActionsForEvents:withEvent:] + 452
5  UIKit                          0x190f2b59c -[UIControl touchesEnded:withEvent:] + 584
6  UIKit                          0x1914b6628 _UIGestureEnvironmentSortAndSendDelayedTouches + 4484
7  UIKit                          0x1914b26c0 _UIGestureEnvironmentUpdate + 1164
8  UIKit                          0x1914b21e0 -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 408
9  UIKit                          0x1914b149c -[UIGestureEnvironment _updateGesturesForEvent:window:] + 268
10 UIKit                          0x190f2630c -[UIWindow sendEvent:] + 2960
11 UIKit                          0x190ef6da0 -[UIApplication sendEvent:] + 340
12 UIKit                          0x1916e075c __dispatchPreprocessedEventFromEventQueue + 2736
13 UIKit                          0x1916da130 __handleEventQueue + 784
14 CoreFoundation                 0x18afeeb5c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
15 CoreFoundation                 0x18afee4a4 __CFRunLoopDoSources0 + 524
16 CoreFoundation                 0x18afec0a4 __CFRunLoopRun + 804
17 CoreFoundation                 0x18af1a2b8 CFRunLoopRunSpecific + 444
18 GraphicsServices               0x18c9ce198 GSEventRunModal + 180
19 UIKit                          0x190f617fc -[UIApplication _run] + 684
20 UIKit                          0x190f5c534 UIApplicationMain + 208
21 MyApp                          0x100128c30 main (main.m:14)
22 libdispatch.dylib              0x189efd5b8 (Missing)

你可以看到它非常奇怪的报告。首先,不应该调用此方法,因为子视图控制器从不调用super.tableView(didSelectRowAt)。其次,它看起来不像普通的tableView(didSelectRowAt)调用 - 没有来自表视图的调用,只能直接调用委托方法。第三,这个方法是空的,没有什么可以崩溃的。

我认为存在一些内存问题,因为Crashlytics报告也说:

# RAM Free: 3.3%
# Disk Free: 3.3%

但我不知道这是不是真的。

您能否告诉我如何调试和解决此问题?

提前致谢。

PS据报道,这不是一次性崩溃,而是经常发生。

0 个答案:

没有答案