Objective-C preprocessor paranoia
I am always deathly afraid of test code working its way into a release app. Usually for me this happens when I am trying to optimize a portion of the code by modifying something that is already there and working, which usually leads to something like this in my code during development:
//#define SAFE_OPTION_1
//#define RISKY_OPTION_2
#define DANGEROUS_OPTION_3
So finally I started to set it up so that I can verify that, at least for the archival build of the app, that the wrong option is not selected by using something like this:
#ifndef DEBUG_VERSION
#if !defined(SAFE_OPTION_1)
#error The release build of MyApp must have the SAFE_OPTION_1 option selected.
#endif
#endif
This code will give me a build error if I forget to set the option back to the safe option, which is good.
Also, I wanted to make sure that one of the three options was selected, as commenting out all 3 options is not good, and may not necessarily generate any build errors on their own. So I then figured out that this would do the trick for me:
#if !defined(SAFE_OPTION_1) && !defined(RISKY_OPTION_2) && !defined(DANGEROUS_OPTION_3)
#error Please select an option.
#endif
Now I get a build error when I accidentally have all 3 options commented out.
BTW, Happy 20th Birthday to the X-Files, which first aired on this date in 1993. I think it is about time for me to go back through and binge watch all 9 seasons of the show.