ほげほげ

プログラミング、英会話、ヨガ、料理などの備忘録など。

Objective-C と Swiftの相互連携

Swift から Objective-Cのクラスを使う

  • Swiftのプロジェクトを作成。
  • Objective-Cで任意のクラスを作成。
#import <Foundation/Foundation.h>

@interface ObjcClass : NSObject
-(void)log;
@end
@implementation ObjcClass
-(void)log{
    NSLog(@"Objc Class Log") ;
}
@end
  • -Bridging-Header.hを作成するか聞かれるのでYESを選択。
  • Swiftから使用したいObjective-Cのクラスを-Bridging-Header.hにインポート。
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "ObjcClass.h"
  • swiftファイルからObjective-Cのクラスを使用するコードを記述。
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        var objcClass = ObjcClass()
        objcClass.log()
        // Override point for customization after application launch.
        return true
    }


sekitaka/SwiftInObjcProj · GitHub

Objective-CからSwiftのクラスを使う

  • Objective-Cのプロジェクトを作成。
  • Swiftで任意のクラスを作成。
import Foundation
class SwiftClass: NSObject {
    func log(){
        NSLog("Swift Class log")
    }
}
  • Swiftのクラスを使用したいObjective-Cのファイルに-Swift.hをインポート。このファイルは見えないので、注意。
#import "SwiftInObjcProj-Swift.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    SwiftClass *swiftClass = [[SwiftClass alloc] init] ;
    [swiftClass log] ;
    return YES;
}


sekitaka/ObjcInSwiftProj · GitHub