【发布时间】:2014-12-25 07:52:22
【问题描述】:
我在一个项目中有这个类/故事板场景,在我过去 4 周的工作中直到昨晚都运行良好。
我已经设法注释掉几乎所有内容,但在点击 UITextField 并输入数字时仍然会崩溃。只有当我输入一个值时它才会崩溃,否则它不会崩溃。
这是我现在正在运行的课程:
import Foundation
import UIKit
import HealthKit
import CoreData
class WorkoutViewController: UITableViewController {
//Properties
@IBOutlet var numberOfLapsTextField: UITextField?
@IBOutlet var metersPerLapTextField: UITextField?
@IBOutlet var workoutDurationTextField: UITextField?
@IBOutlet var paceTextField: UITextField?
var healthStore:HKHealthStore?
override func viewDidLoad() {
super.viewDidLoad()
}
最初它的 IBOutlets 为 !代替 ?它有一个 CoreData 堆栈属性,tableview 背景的一些模糊背景效果,从 viewDidLoad 上的健康存储中获取用户的体重,一个用于健康存储获取的谓词辅助方法以及一个取消和完成按钮。完成按钮从文本字段中捕获数据,进行一些计算并将数据保存到健康存储和核心数据。但是所有这些都已被注释掉,只留下上面看到的内容。
有一次我确实设法在控制台中获得了一个奇怪的堆栈跟踪(似乎再也找不到了),上面写着:
[UIPhysicalKeyboardEvent _matchesKeyCommand:]
还有一些其他人喜欢它。
我很难过,有什么想法吗?异常断点是其中之一,但它只是将我带到了采用 UIResponder 的 AppDelegate 类声明行。我学习并重建。我不知道还要找什么。
我认为它是一个损坏的故事板文件,因为我添加和删除了带有文本字段的场景并且它们的行为都相同。这是我的 storyboard.xml 文件:
【问题讨论】:
-
这可能是一个僵尸对象。请参阅stackoverflow.com/questions/5386160/… 确认这一点,然后使用 Instruments 找出创建僵尸的原因。
-
我运行了 Zombies & Profiler,但什么也没得到。它仍然崩溃,但分配列表中没有僵尸。 NSZombie 检测已启用。
-
好吧,您的数据中有一个 NSNull。您需要学习如何获取正确的异常堆栈跟踪,以便确定异常被抛出的位置,然后查看该点的数据。如果您使用的是 JSON,则数据中可能有一个
null元素。 -
null 是由长度调用抛出的,我没有直接在我的代码中进行调用。我分析了堆栈跟踪,正如我在原始问题中发布的那样,它是从 UIPhysicalKeyboardEvent _matchesKeyCommand 抛出的:我不明白为什么我的问题被否决了
-
了解如何获取正确的堆栈跟踪,然后在此处发布。