-DNDEBUG 和 -DNS_BLOCK_ASSERTIONS 标志有什么区别

What is the difference between -DNDEBUG and -DNS_BLOCK_ASSERTIONS flags

我试过 FauxPas 源代码分析器,它告诉我缺少 -DNDEBUG 标志,下一个描述:

This argument disables the C standard library assertion macro (as defined in assert.h).

不过,当我检查我的构建设置时,我发现描述标志非常相似 -DNS_BLOCK_ASSERTIONS=1

所以我现在想知道。我真的需要 FauxPas 建议的标志,还是我对现有的标志没意见?

NDEBUG 禁用 assert(),它是 C 标准库的一部分。 NS_BLOCK_ASSERTIONS 禁用 NSAssert(),它是 Foundation 的一部分。如果您的代码中有这两种断言,您通常会同时需要这两种断言。