Objective-C Language Logging Removing Log Statements from Release Builds


Messages printed from NSLog are displayed on Console.app even in the release build of your app, which doesn't make sense for printouts that are only useful for debugging. To fix this, you can use this macro for debug logging instead of NSLog.

#ifdef DEBUG
#define DLog(...) NSLog(__VA_ARGS__)
#define DLog(...)

To use:

NSString *value = @"value 1";
DLog(@"value = %@", value);
// little known fact: programmers look for job postings in Console.app
NSLog(@"We're hiring!"); 

In debug builds, DLog will call NSLog. In release builds, DLog will do nothing.