Swiftバージョンと最低動作OSとの関係はちょっと複雑です。
iOS開発で最低OSバージョンを決めているのは、言語ではなく、SDKです。普通にXCodeの最新版を使っていると最新のSDKが付属しますが、その最新のSDKはだいたい数バージョン前のOSまでをサポートすることが多いです。現在、 XCode9付属のSDKでは最低iOS8までサポートしているようです。
加えて、手動で古いSDKをインストールすることができるので、頑張るともう少し前のOSまでサポート範囲を広げることができるようです(けっこう苦労するらしいですが)。
一方、コンパイラもどんどんバージョンアップしており、最新のコンパイラは最新のXCodeでしか使えません。Swift4をコンパイルできるコンパイラが使えるのはXCode9以降のみです。
したがって、こういう流れでアプリの最低バージョンが決まります
Swift4を選択
↓
XCodeのバージョンがSwift4対応コンパイラを扱えるXcode9以降に縛られる
↓
対象OSがXCode9でサポートされるSDKに縛られる
↓
デフォルトでは iOS8以降が対象に。古いSDKを入れられればもっと広がるかも
これにプラスして、使う機能によってはAPIによる縛りがかかります。新しいOSでのみ利用可能な機能を使うアプリは、最低サポートOSがそこになります。例えばiOS9以降で搭載されたReplayKitを使用する場合、そのアプリの最低OSバージョンはiOS9です。
Codableですが、CodableプロトコルはSwift4の言語仕様を使っていますが、これ自体は言語の方の話なので本来はOSとは関係ありません。が、実際にエンコード/デコードを行うJSONDecoderがiOS11から利用可能なAPIなので、上記のAPIによる縛りがかかってiOS11以降専用となります。
(修正)
Codableですが、CodableプロトコルはSwift4の言語仕様を使っていますが、OSの新機能を使っているわけではないので、コンパイル時にデータや文字列の基本操作に還元されるようです。したがって、SDKの最低サポートバージョンまで利用可能です。JSONDecoderはiOS11以降かと思っていましたが、Deployment TargetをiOS8にしてもビルド可能でした。これも内部的には新機能は使っていないようです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/10 01:12
2018/01/10 02:19 編集
2018/01/10 02:22
2018/01/10 02:58 編集
2018/01/10 03:00