Project Unknown's Blog

Peojct.Unknownと言う名前で細々とアプリ開発をやってるメンバーのブログです。

Objective-CからSwiftへ移行する (AppDelegate)

ゆう@あんのうんです。

提供中のKeyHolderですが、 これ半分くらいまだObjective-Cのコードで動いています。

流石に今後の保守の事を考えると、All Swift化した方が良いと思ってがちゃがちゃ開発しているにあたり、ちょっとつまずいた所のメモ書き

AppDelegateの書き換え

AppDelegateを単純にSwift化するだけなら問題ないのですが、 こちらの対応を行うと同時に、Objective-CでProjectを作るとデフォルトで入ってくるmain.mにて、

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

こんな感じでAppDelegateを呼び出しているのですが、Swift化から、AppDelegateにて

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
/*省略*/
}

こうしているため、実はmain.mは不要となります。

(逆に残しているとLinker errorとなります) なので、こいつを削除してあげると正常動作します。