LoginSignup
13
13

More than 5 years have passed since last update.

Swiftのプロジェクトでmain.mを使う

Posted at

main.mを使うライブラリはいくつかあります。
例えば、injectionforxcodeなど。

特に、injectionforxcodeはまだObjective-CでしかPatchが出来ないので、どうにかしてmain.mを使うよう弄ってみました。

xcode6対応すれば無駄な苦労になりますので、適当に眺めてください。

結論

main.m
#import <UIKit/UIKit.h>
#import <##APPNAME##-Swift.h>

int main(int argc, char *argv[]) {
    @autoreleasepool {
        int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        return retVal;
    }
}

##APPNAME##はご自分のAppNameと読み替えてください。

を普通に置いて、

AppDelegate.swift
- @UIApplicationMain
+ //@UIApplicationMain

とすれば動きます。

ちなみに
##APPNAME##-Swift.h
はObjective-C内でインクルードすればプロジェクト内のSwiftのクラスが全て見えるようになる魔法のヘッダです。なにも特別用意せずインクルードするだけで使えます。

ちなみにinjectionforxcodeはxcode5までしか対応しておらず、現状のままではxcode6にインストールすら出来ません。(.plistを少し弄るだけで出来ます。)
強引に使おうとトライしていますが、BundleInjection.hでビルドに失敗するので調査中です。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13