Using Swift with Cocoa and Objective-C (Swift 2): Swift and Objective-C in the Same Project
こちらのページにやり方書いてあるので、これに従ってやっていこう。
- Objective-Cのファイルを追加する。
追加するとXcodeが尋ねてくるので、YESとすると、bridging-header.hが作成される。
bridging header fileに、Objective-Cで作成したクラスの必要なヘッダファイルをimportする。
これで、Objective-Cで作ったクラスが扱えるようになる。
やってみよう
RPMediaPlayer.h
RPMediaPlayer.m
RPItem.h
RPItem.m
この4つのファイルを使用したい。
RPMediaPlayer.hはAVFoundationフレームワークと、”RPItem.h”をimportしているのだけども、この場合はどうなるのか?
RPMediaPlayer.h
#import <Foundation/Foundation.h> #import <AVFoundation/AVFoundation.h> #import "RPItem.h" @interface RPMediaPlayer : NSObject - (void)play; @end
RPMediaPlayer.hファイル追加。そして、RPMediaPlayer.mファイルを追加したところで、Xcodeが尋ねてきた。
“Create Bridging Header”を選択した。
すると、プロジェクトに、プロジェクト名-Bridging-Header.hファイルが加わっている。
RPItem.h、RPItem.mをプロジェクトに追加。
プロジェクト名-Bridging-Header.hに、
#import “RPMediaPlayer.h”
と記述。
これで、Swift側のファイルから使えるようになった。
ViewController.Swift
import UIKit class ViewController: UIViewController { let player = RPMediaPlayer() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. player.play() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
これでちゃんと動作した。