How to identify if Swift was compiled with Optimization

i0S Swift Issue

Question or problem in the Swift programming language:

As some of you may be aware when running in fully Debug-Mode swift can be terribly slow. Is there a way i can print out a message in code or to the GUI to let me know if I somehow forgot to compile it correctly. I’m running in mixed mode so if somebody can give me Objc and Swift code that would be super awesome.

Thanks!

How to solve the problem:

Solution 1:

I don’t think you can detect this at runtime, but you can use the DEBUG preprocessor macro (in Objective-C) that is defined in the Debug configuration by default:

#ifdef DEBUG
NSLog(@"I'm in debug mode!");
#endif

This assumes that you don’t compile without optimizations in the Release configuration 🙂

If you want to check that in Swift, you need to define a Build Configuration by adding -D DEBUG to “Other Swift Flags” for the Debug configuration only in the Build settings. Then you can check for that configuration if #if:

#if DEBUG
println("I'm in debug mode!")
#endif

Solution 2:

You can use Xcode’s schemes to add a flag as an argument or in the environment variables – you can then check for it using NSProcessInfo – either -arguments or -environment.

In Xcode, go to Product > Scheme > Edit Scheme in the menu bar, select Run and under the Arguments tab, add either the argument or environment variable.

Hope this helps!