May 2014
Intermediate to advanced
624 pages
19h 43m
English
If you’re used to Unix or Linux development, you’re accustomed to global macros like NDEBUG and DEBUG, and expect them to be set for you automatically.
If the argument to the standard C assert() macro is zero, it halts the program. If NDEBUG is set, assert() does nothing, so you can publish code that may still exhibit the bug you put in the assertion for, but at least it won’t crash.
The NS_BLOCK_ASSERTIONS macro does the same with Cocoa’s NSAssert family of assertion macros.
Many developers like to define a DEBUG macro to guard logging and assertion code. It’s not a standard macro, but it’s very common.
Xcode’s project templates define ...