Often, one will hear a programmer exclaim over linker errors or runtime dynamic-load errors that appeared only when an Xcode target was changed from Debug to Release configuration (or from Development to Deployment in older projects). The remarks often take the form of "it worked correctly until I switched to Release, so there must be something wrong with the Release configuration."
Well, no; it wasn't working correctly. The flaw was also present in the Debug configuration, and your application was walking dead when you ran it in the Debug configuration.
The culprit — if there is one — is ZeroLink. ZeroLink, you remember, is a feature that the Debug configuration uses to speed the process of getting a project compiled and running. It does this by skipping virtually all of the work of the linker, leaving the linkage of individual objects to when those objects are used while the program is run. If your project never defines the function foo(), and you never call foo() when you run the Debug version, the application will "run fine." The lack of the definition will never be noticed.
There are two solutions. One might be to exercise 100% of your application while in your Debug phase. Then every module will be loaded, and any that can't be loaded will trigger a run-time error. 100% code coverage is a good thing if you want your debugging phase to debug the whole application, but it isn't practical in every run of the application.
The other solution is to turn ZeroLink off once in a while. Without ZeroLink, building a target will put the application through the full process of linking. One of the services a linker performs is to verify that every symbol you use is defined somewhere. If definitions can't be found for some functions or variables, the linker halts the build with an error message that lists the objects it couldn't find.
The summary view of build errors in the project window or Build Results window won't be detailed enough to include the list of symbols that weren't defined. Open the detailed build log (third button at the bottom of the summary in the Build Results window), where you can find the full text of the linker error, including the missing symbols.