我在三天内遇到了第二个问题,错误的绑定导致我数小时的搜索和头痛。
看一眼堆栈跟踪表明调试存在问题(例如,在运行时开始生成异常之前调用的最后一个方法是 bind:toObject:withKeyPath:options:)。但是,我发现无法确定哪个绑定导致了问题:
-
堆栈跟踪或变量检查中的任何内容都未指示崩溃的调用中涉及哪些视图。
-
最后一个可通过单步执行代码来跟踪的非机器指令是对单片函数(awakeFromNib 或 makeKeyAndOrderFront)的调用。
-
实际异常中的消息令人困惑 - 例如,"无法从类 NSScrollView 的对象创建 NSArray",同时创建一个没有任何 NSScrollView 的窗口(只有两个按钮和两个文本字段)。
那么......调试这些类型的问题有什么技巧吗?例如:
-
有没有办法获取 nib/xib 中指定的所有绑定的列表?(无法做到这一点让我发疯!
-
有没有办法找出崩溃中涉及哪些视图或控件?
-
有没有办法获取有关像 awakeFromNib 这样的整体调用中发生的事情的更多信息?
您可以打开 xib 文件作为源代码(不在 IB 中)并搜索"IBBindingConnection"
部分。
示例:贾斯汀的搜索方式(见评论):
grep -A 18 -B 1 -H -a -n "IBBindingConnection" /PATH/TO/NIB