Objective-CとSwiftのブリッジ
bridging headerを使って、Objective-CのクラスとメソッドをSwiftから利用できるようにする方法を理解します。
「Objective-CとSwiftのブリッジ」はCoddyKit上の無料Objective-C iOS Development for Legacy & Enterprise Appsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはObjective-C iOS Development for Legacy & Enterprise Apps学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Objective-C iOS Development for Legacy & Enterprise Appsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
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!
よくある質問
「Objective-CとSwiftのブリッジ」レッスンは無料ですか?
はい。「Objective-CとSwiftのブリッジ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Objective-C iOS Development for Legacy & Enterprise Appsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Objective-C iOS Development for Legacy & Enterprise Appsコースには全4レッスンが含まれています。
「Objective-CとSwiftのブリッジ」で何を学びますか?
bridging headerを使って、Objective-CのクラスとメソッドをSwiftから利用できるようにする方法を理解します。 ブラウザで直接実行するハンズオンコードでObjective-C iOS Development for Legacy & Enterprise Appsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Objective-C iOS Development for Legacy & Enterprise Appsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのObjective-C iOS Development for Legacy & Enterprise Appsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Objective-CとSwiftのブリッジ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このObjective-C iOS Development for Legacy & Enterprise Appsレッスンでコードを書いて実行できますか?
はい。すべてのObjective-C iOS Development for Legacy & Enterprise Appsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Objective-CとSwiftのブリッジ
- SwiftとObjective-Cのブリッジ
- Objective-Cフレームワークの作成
- ブリッジ間のNullabilityと型マッピング