Objective-Cとの連携
Objective-CとSwiftの間で動作するブリッジングヘッダーの作成について学びます。
私たちは、Objective-Cのプロジェクトであっても、ネイティブのSwiftライブラリを使用することをお勧めしますが、Objective-Cライブラリを使用する必要がある場合は、このドキュメントが役立ちます。
SwiftからObjective-Cを呼び出す
プロジェクトにブリッジングヘッダーを追加し、適切なヘッダーをインポートすることで、SwiftコードからObjective-Cライブラリを簡単に呼び出すことができます。
ブリッジングヘッダー
ブリッジングヘッダーを作成するには:
-
Swiftプロジェクトで新しいファイルを作成します。ファイルタイプを選択するように求められたら、Objective-Cファイルを選択します。
-
このファイルに一時的な名前を付けます。例えば、“placeholder.m"などとします。後でこのファイルは削除します。
-
“Finish"をクリックすると、XCodeがブリッジングヘッダーの作成を求めてきます(求められない場合は、すでにプロジェクトにブリッジングヘッダーがある可能性があります)。“Create Bridging Header"を押して続行し、Xcodeが自動的に新しいヘッダーファイルを作成します。
-
placeholder.m
ファイルをプロジェクトから削除し、新しいファイル<ProjectName>-Bridging-Header.h
が作成されたことを確認します。 -
新しいブリッジングヘッダーに以下のインポート文を追加します:
@import TealiumIOS;
次に、SwiftからObjective-Cのコードを呼び出します:
class TealiumHelper { func somefunc () { let tealConfig = TEALConfiguration.init(account: "ACCOUNT", profile: "PROFILE", environment: "ENVIRONMENT") let teal = Tealium.newInstance(forKey: "KEY", configuration: tealConfig) teal.trackView(withTitle: "SCREEN_NAME", dataSources: ["DATA":"VALUE"]) } }
Objective-CからSwiftを呼び出す
Swiftライブラリは、コードに必要な注釈が欠けていたり、多くの場合、モジュールがNSObjectから継承されず、ネイティブのSwiftデータ型を使用しているため、直接Objective-Cから呼び出すことはできません。 しかし、中間のヘルパークラスを使用することで、Objective-CからSwiftライブラリを呼び出すことが可能です。
ヘルパークラス
- Objective-Cプロジェクトで新しいSwiftファイルを作成します。まだブリッジングヘッダーを追加していない場合は、追加するように求められます。このプロンプトを受け入れます。新しいSwiftファイルの名前を"TealiumHelper.swift"とします。
- 新しいヘルパーを呼び出す必要があるファイルに新しいSwiftヘッダー(
<ProjectName>-Swift.h
)をインポートします。#import "ProjectName-Swift.h"
ヘルパーファイルのメソッドは、Objective-Cのコードで使用できるようになります。ヘルパーをシングルトンにすることをお勧めします。
#import "TestSwiftBridge-Swift.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// instantiate the helper singleton
TealiumHelper * help = [TealiumHelper sharedInstance];
// call the start method, which initializes the Tealium library
[help start];
// trigger a new event tracking call from objective-c
[help track:@"this is from objective-c!" data:@{@"mydata":@"hello from obj-c"}];
return YES;
}
リンク
最終更新日 :: 2024年March月29日