如何让NSAssert在Xcode4中记录描述?

时间:2011-12-07 06:28:01

标签: ios cocoa debugging xcode4 assert

Xcode 4告诉我NSAssert何时失败,但不再记录断言描述和回溯。我见过这个问题:

How to make Xcode4 stop at NSAssert failure?

这很有用,但我宁愿记录断言并继续。如何让NSAssert以这种方式运行?谢谢!

2 个答案:

答案 0 :(得分:5)

您链接的问题可以帮助您完成大部分工作。将断点操作添加到为断言设置的断点。从断点导航器中选择断点,单击鼠标右键,然后选择“编辑断点”。选择Edit Breakpoint会打开一个弹出编辑器。在弹出编辑器中,您应该看到带有文本的操作行单击以添加操作。单击该文本以打开菜单。从操作菜单中选择日志消息。选中“评估操作后自动继续”复选框,以在记录消息后自动继续。

enter image description here

答案 1 :(得分:1)

如果您需要登录并继续,那么您不需要使用NSAssert。

通常,开发人员会在调试版本中使用断言,以便在检测到严重错误时立即停止执行应用程序。默认情况下,Xcode项目在发布版本中设置NS_BLOCK_ASSERTIONS,以便NSAssert调用编译。

对于只需要登录控制台的小问题,您应该只使用NSLog。 (调试器控制台实际显示发送到'stdout'的数据,这是NSLog发送结果的地方。)

如果您需要调试版本来断言和发布版本以进行记录,请使用两者。是的,这意味着您可能在代码中出现两次相同的描述,但这很好。任何开发人员都会很容易理解。 (您可以先创建结果字符串,如果愿意,可以将其提供给NSAssert和NSLog。)

如果必须覆盖NSAssert调用的行为,那么您有2个选项: 1-更改NSAssert,NSAssert1,NSAssert2等的宏定义以更改结果。 2-为你的线程提供你自己的NSAssertionHandler对象,让它跳过抛出异常。