General

Image 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 ...

Get Xcode 5 Start to Finish: iOS and OS X Development now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.