我不喜欢实时调试,但如果有必要,我会这样做。
有没有办法弄清楚Objective-C中StackTrace所指的代码行是什么?它所指的变量怎么样?例如:
2010-05-13 19:39:11.673 Thingers[21003:207] *** -[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0
2010-05-13 19:39:11.674 Thingers[21003:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0'
2010-05-13 19:39:11.675 Thingers[21003:207] Stack: (
29303899
...
11130
)
我看到我们正在讨论向没有它的东西发送count
消息(也许它是一个NSCFString?),但是有没有办法弄清楚什么是/的命名引用该实例(0x3b0ebb0)是指?
答案 0 :(得分:6)
这里的堆栈大多没用。这里重要的是
-[NSCFString count]: unrecognized selector sent to instance 0x3b0ebb0
这意味着-count
被发送到字符串。这通常是由内存管理错误引起的。您可以enable NSZombie再次运行程序以查看过度释放的内容。
另外,在Xcode中使用Build→Build and Analyze来静态地找出可能的内存管理错误。