Ghostboard pixel

How To Use Both Swift And Objective-C In One Project?

How To Use Both Swift And Objective-C In One Project?

The Swift and Objective-C interoperability is very good so that it is very easy to use both Swift and Objective-C in one project.

Using Objective-C code in Swift files

In the so-called bridging-header file you can import Objective-C files. Xcode translates then all signatures to Swift, so that it feels like you are calling real Swift functions.

The easiest way to create the bridging-header file is by creating a new Objective-C class. If there is no bridging-header file in your project yet, Xcode asks you if the bridging-header file should be created. You can also manually create it: Just create an Objective-C header file, for example “Bridging-Header.h”.  Then go to the “Swift Compiler – Code generation” section in the build settings and set the name of the bridging-header file in the field “Objective-C Bridging Header”.

After adding an Objective-C file to the bridging header file, you should compile the project first before trying to access the translated signatures.

Using Swift code in Objective-C files

The other way round is even easier. Xcode automatically creates a file that contains the translated signatures. You just have to important a file called “<ProductModuleName>-Swift.h” into the Objective-C files:

#import "<ProductModuleName>-Swift.h"

The product module name is just the name of the project. All Swift classes that inherits from NSObject  – or from on of its subclasses – are available then in the Objective-C file.

Again, you should compile your project before trying to access the translated signatures.

 Why should you use both Swift and Objective-C in one project?

So one questions remains: Why should you even use both Objective-C and Swift in one project? Well, if you are starting a new project it’s a good idea to use Swift. But you want to use for sure some libraries or old code. And if they are written in Objective-C, you can easily use them.  Conversely, you could also use Swift in an Objective-C project. This way you can slowly start to learn Swift. There are some posts about that topic on this blog:

References

@ Anchiy / shutterstock.com
iBook Store: Using Swift with Cocoa and Objective-C