なおさんのブログ

iOSエンジニアのブログのはずがいろいろ書いてます。

Objective-CからSwiftメソッドを呼び出す方法

はじめに

いまだにObjective-Cのコードを触る機会がありますが、そこからSwiftのコードを呼び出そうとした時にいつもどうやるんだっけ?となるのでメモがてら記事にしようと思います。

やること

Swift側

呼び出したいクラスとメソッドに@objcをつけます。あとクラスはNSObjectを継承します

@objc class FooClass: NSObject {
    @objc func foo() {
   :
    }
   :
}

@objcMembersでクラス全体を呼び出せるようになります

@objcMembers
class FooClass: NSObject {
    func foo() {
   :
    }
   :
}

Objective-C ProductName-Swift.hをインポートします。あとは普通に呼び出します

#import "ProductName-Swift.h"

- (void)bar
{
  :
   [[FooClass alloc] init] foo];
  :
}

さいごに

たまにしか使わないので結構忘れます。 先日もNSObjectの付け忘れで結構悩んでしまいました。今後はこちらのメモを見るようにしようと思います

参考資料

qiita.com