如何使NSAssert在Xcode4中logging说明?

Xcode 4告诉我什么时候NSAssert失败了,但是断言描述和回溯不再被logging。 我看到了这个问题:

如何使Xcode4停止在NSAssert失败?

这是有帮助的,但我宁愿logging断言,继续。 我怎样才能使NSAssert这样的行为? 谢谢!

你所关联的问题可以让你大部分时间都在那里。 将断点动作添加到您为断言设置的断点处。 从断点导航器中select断点,单击鼠标右键,然后select“编辑断点”。 select编辑断点打开一个popup式编辑器。 在popup的编辑器中,您应该看到带有文本的“操作”行单击以添加操作。 点击该文字打开一个菜单。 从操作菜单中select日志消息。 select“评估操作后自动继续”checkbox,以便在logging消息后自动继续。

在这里输入图像说明

如果您需要login并继续前进,则不需要使用NSAssert。

一般来说,开发人员在debugging版本中将使用断言,以便在发现严重错误时立即停止执行应用程序。 默认情况下,Xcode项目在发布版本中设置NS_BLOCK_ASSERTIONS,以便NSAssert调用被编译出来。

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

如果您需要debugging版本来声明和发布构build日志,只需使用两者。 是的,这意味着你可能会在代码中出现两次相同的描述,但这很好。 任何开发人员都很容易理解。 (你可以先创build结果string,如果你愿意,可以把它提供给NSAssert和NSLog。)

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