Bridging Objective-C to Swift
Understand how to expose Objective-C classes and methods to Swift using the bridging header.
Bridging Objective-C to Swift is a free Objective-C iOS Development for Legacy & Enterprise Apps lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Objective-C iOS Development for Legacy & Enterprise Apps learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Bridging Obj-C to Swift
Welcome! In modern iOS development, you'll often encounter projects that mix Swift and Objective-C. This is especially true for legacy apps or when integrating older libraries.
This lesson teaches you how to make your existing Objective-C code accessible and usable within a Swift project, a process known as bridging.
The Bridging Header
The key to using Objective-C code in Swift is the bridging header. This is a special Objective-C header file that tells the Swift compiler which Objective-C classes, categories, and protocols it should expose to your Swift code.
Think of it as a translator's dictionary for your project.
Xcode's Automatic Helper
When you add your first Objective-C file (.h or .m) to an existing Swift project, Xcode will often prompt you:
- "Would you like to configure an Objective-C bridging header?"
If you click 'Create Bridging Header', Xcode automatically sets up the file and configures your project's build settings for you. It's usually named YourProjectName-Bridging-Header.h.
Manual Setup Steps
If Xcode doesn't prompt you, or if you need to create one later, you can do it manually:
- Create a new header file (File > New > File > Header File) and name it
YourProjectName-Bridging-Header.h. - In your project's Build Settings, search for 'Objective-C Bridging Header'.
- Set the path to your new header file (e.g.,
$(SRCROOT)/YourProjectName/YourProjectName-Bridging-Header.h).
Importing Obj-C Files
Once you have your bridging header (whether created automatically or manually), you simply import the Objective-C header files (.h files) of the classes you want to use in Swift.
You do this using the standard Objective-C #import directive inside your bridging header:
#import "MyObjectiveCClass.h"Do NOT import Swift files into the bridging header!
Example: Simple Obj-C Class
Let's define a simple Objective-C class called MyLogger. We'll put its header in our bridging header.
// MyLogger.h
#import <Foundation/Foundation.h>
@interface MyLogger : NSObject
- (void)logMessage:(NSString *)message;
- (NSString *)getGreetingForName:(NSString *)name;
@end
This class has two methods: one to log a message and one to return a personalized greeting.
Implementation of MyLogger
Here's the implementation for our MyLogger class:
// MyLogger.m
#import "MyLogger.h"
@implementation MyLogger
- (void)logMessage:(NSString *)message {
NSLog(@"[MyLogger] %@", message);
}
- (NSString *)getGreetingForName:(NSString *)name {
return [NSString stringWithFormat:@"Hello, %@!", name];
}
@end
Remember, you'd add #import "MyLogger.h" to your YourProjectName-Bridging-Header.h.
Using Obj-C in Swift
Once MyLogger.h is imported into the bridging header, Swift can see and use MyLogger just like any other Swift class! Notice how Objective-C methods are automatically translated into a more Swift-like syntax.
Try running this example:
import Foundation
// Assume MyLogger is available via the bridging header
// In a real project, MyLogger.m and .h would be compiled
@objcMembers
class MyLogger: NSObject {
func logMessage(_ message: String) {
print("[MyLogger] \(message)")
}
func getGreetingForName(_ name: String) -> String {
return "Hello, \(name)!"
}
}
// --- Swift code using the bridged class ---
let logger = MyLogger()
logger.logMessage("This is a message from Swift!")
let greeting = logger.getGreetingForName("CoddyKit Learner")
print(greeting)
Type Mapping & Naming
Swift automatically maps many Objective-C types to their Swift equivalents:
NSStringbecomesStringNSArraybecomesArrayNSDictionarybecomesDictionaryNSErrorbecomesError
Objective-C methods are also often renamed to fit Swift's naming conventions (e.g., - (void)logMessage:(NSString *)message; becomes func logMessage(_ message: String)).
Quick Check
You've learned about the bridging header. How does it enable Objective-C code to be used in Swift?
Recap: Bridging Success!
Great job! You've learned the fundamentals of bridging Objective-C code to Swift.
- The bridging header is your gateway.
- Xcode can auto-create it.
- You
#importObjective-C header files into it. - Swift automatically handles type mapping and naming conventions.
This skill is vital for working on mixed-language projects and integrating with existing Objective-C libraries!
Frequently asked questions
Is the “Bridging Objective-C to Swift” lesson free?
Yes — the full text of “Bridging Objective-C to Swift” is free to read here on the web, and the Objective-C iOS Development for Legacy & Enterprise Apps course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Objective-C iOS Development for Legacy & Enterprise Apps course, upgrade to CoddyKit PRO.
What will I learn in “Bridging Objective-C to Swift”?
Understand how to expose Objective-C classes and methods to Swift using the bridging header. You practise Objective-C iOS Development for Legacy & Enterprise Apps with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Objective-C iOS Development for Legacy & Enterprise Apps?
No prior experience is required. Objective-C iOS Development for Legacy & Enterprise Apps on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Bridging Objective-C to Swift” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Objective-C iOS Development for Legacy & Enterprise Apps lesson?
Yes. Every Objective-C iOS Development for Legacy & Enterprise Apps lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Bridging Objective-C to Swift
- Bridging Swift to Objective-C
- Creating Objective-C Frameworks
- Handling Nullability and Type Mapping Across the Bridge