NSAssert 在运行调试器时在 Xcode 4(最高 4.6 包括在内)中运行良好。断言触发,你断点它,然后它输出断言消息。
但是当在调试器之外运行时(在设备上调试构建),断言会触发 - 但没有消息。
这使得断言毫无用处:您可以看到断言的行号,但程序员的详细信息已被擦除。
这是 Xcode 的问题吗?铿锵声/LLVM 问题?是设置错误的值吗?或者有解决方法吗?
示例代码:
NSAssert(FALSE, @"X was invalid: %i", x );
示例输出(控制台):
<Warning>: *** Assertion failure in -[myClass method:], myClass.m:124
<Notice>: Formulating crash report for process MyApp[82]
预期输出(控制台):
<Warning>: *** Assertion failure in -[myClass method:], myClass.m:124
<Warning>: *** "X was invalid: -435"
<Notice>: Formulating crash report for process MyApp[82]
注意:我只是猜测 Apple 将如何格式化断言消息。
更新:发现问题。我原来的描述有误:
在调试器中运行时消息未输出到控制台