Search code examples
objective-cxcodebuild-settings

What is the difference between -DNDEBUG and -DNS_BLOCK_ASSERTIONS flags


I've tried FauxPas source code analyzer and it showed me that I am missing -DNDEBUG flag, with next description:

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

Though, when I check my build settings I found very similar by description flag -DNS_BLOCK_ASSERTIONS=1.

So I wonder now. Do I really need the flag that FauxPas suggests or I am fine with the one I have?


Solution

  • NDEBUG disables assert(), which is part of the C standard library. NS_BLOCK_ASSERTIONS disables NSAssert() which is part of Foundation. You generally will require both if you have both kinds of assertions in your code.