繁体   English   中英

处于发布模式而非调试模式的应用程序的异常

[英]exception for app in release mode, not in debug mode

我的didSelectRowAtIndexPath方法中有一个异常,我不太清楚为什么。 我向用户显示了可供选择的可能性列表, UITableView基于存储在Core Data中的值进行填充。 当前选择的项目具有Checkmark指示符。 我的方法如下:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    let value = self.fetchedResultsController.objectAtIndexPath(indexPath) as CoreDataObject
    currentSelected = value.id as Int

    self.tableView.reloadData()
}

在开发模式下可以,但是在生产和测试飞行中,此方法会崩溃。 崩溃日志如下:

Crashed Thread 0 :
0   CoreFoundation  0x25f41a7d  _CFRetain + 165
1   UIKit   0x29619d67  -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 919
2   UIKit   0x296cb9df  -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 195
3   UIKit   0x2957da25  _applyBlockToCFArrayCopiedToStack + 309
4   UIKit   0x294f982b  _afterCACommitHandler + 459
5   CoreFoundation  0x26007d95  __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 21
6   CoreFoundation  0x26005453  __CFRunLoopDoObservers + 279
7   CoreFoundation  0x2600585b  __CFRunLoopRun + 915
8   CoreFoundation  0x25f533c1  CFRunLoopRunSpecific + 477
9   CoreFoundation  0x25f531d3  CFRunLoopRunInMode + 107
10  GraphicsServices    0x2d3510a9  GSEventRunModal + 137
11  UIKit   0x29562fa1  UIApplicationMain + 1441

我在这里想念什么吗? 为什么这种方法会崩溃? 我只是存储当前选择的ID,然后重新加载数据,以便它在重新加载后可以显示选中标记。 我在这里想念什么吗? 它应该像获取新ID然后重新加载数据一样简单。

我正在使用的CoreDataObject来自Objective-C ,并且id字段是NSNumber

我在下面尝试了其他解决方案:

调用selectRowAtIndexPath:animated:scrollPosition时崩溃:

iPhone应用程序在-[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]崩溃

iOS-didSelectRowAtIndexPath导致应用崩溃

万一其他人有这个问题。 currentSelected是一个声明为Int的全局变量,该value对象的id字段为NSNumber。 我将其更改为以下内容并起作用:

self.currentSelected = value.id.integerValue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM