Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

SwiftアプリでiOS7.xをサポートする時に気をつけること

Swiftアプリを作って、その中でSwiftのライブラリを参照している形をとっている時に注意が必要。ArchiveしてApp Storeに配信する時に以下のようなエラーが出て審査が通らない可能性があるためです。

https://cloud.githubusercontent.com/assets/364754/4569019/0bbb9396-4f43-11e4-9849-07d7744bef1f.png

これが曲者なのが、AdHocで実機に入れる時は何の問題もないこと。AppStore配信をしようとすると、Deployment TargetをiOS7にしてもMinimalVersionは8.0以上なのでNGですとエラーが出てしまう。Dynamic Linkingの制限に引っかかるようだ。


ios8 - Will iOS 8 support dynamic linking? - Stack Overflow

この問題の解決策としては2つある。

1つはSwiftのライブラリを"直接"プロジェクトに追加すること。プロジェクトを追加するのではなく、ライブラリのプロジェクト内のSwiftファイルを直に追加する。Dynamicが無理ならDirectだっていうオチ。

もう1つはSwiftのライブラリを使うのをやめて、Objective-Cで書かれたライブラリを使うこと。その際にはBridging-Headerという読んで字の如しなヘッダーを経由して、SwiftからObjective-Cのライブラリを利用できる。CocoaPodsも当然使える。どう考えてもCocoaPodsが使える方が嬉しいに決まってるので、ブリッジして使おう。この世からObjective-Cのランタイムが無くなるまで使えるはずだから。

以上です。