質問: Xcode上で設定する iOS Development Target Podfileで設定する platform :ios 上記二つのOSバージョンがなんの意味を持っているのか分からないです。 例えば上記二つを共にiOS13に設定した上でiOS14のiPhone上にビルドしても、特に問題なくビルドでき、動作にも問題がありません。 これら二つの意味を教えていただきたいです。 また、一般的にiOSのバージョンが上がったとき、これら二つの数字も最新に上げ、エラーなくビルドできるように対応するべきなのでしょうか? ご回答よろしくお願いいたします。 --追記 202010201749-- XcodeのバージョンとSwiftのバージョンとiOSのバージョンの兼ね合いも分からないので教えていただきたいのです。 Xcode12でSwift5.3及びiOS14に対応したことは分かったのですが、それはつまりXcode11以前でビルドしたアプリはiOS14では動かせないということでしょうか? 反対に、Xcode12でswift4.2などでビルド(もしかしたらそんなことはできないのかも知れませんが)した場合、iOS14では動くのでしょうか? 動作可能なiOSバージョンというものが、swiftのバージョンに紐づいているのか、Xcodeのバージョンに紐づいているのか、分かりません。
回答: > > Xcode上で設定する iOS Development Target > > > アプリの配布対象となる「最低バージョン」です。iOS14にしたらiOS13.x系以前のiPhone/iPod touchにはインストールできなくなります。 > > Podfileで設定する platform > > > XcodeのDeployment Targetと合わせておけばよいです。 > > また、一般的にiOSのバージョンが上がったとき、これら二つの数字も最新に上げ、エラーなくビルドできるように対応するべきなのでしょうか? > > > 最新のiOSにしか対応しないのであれば、それでOKです。 ある程度過去のバージョンのiOSにも対応するのであれば、ここの値は変更しません。そのうえで特定のバージョン以降でしか使えない処理をする必要がある場合は以下のようにして、端末のiOSバージョンにあわせて処理を分岐させることになります。 ``` var img: UIImage? = nil if #available(iOS 13.0, *) { img = UIImage(systemName: "xxxxx") } else { img = UIImage(name: "xxxxx") } ``` > > XcodeのバージョンとSwiftのバージョンとiOSのバージョンの兼ね合いも分からないので教えていただきたいのです。 > > Xcode12でSwift5.3及びiOS14に対応したことは分かったのですが、それはつまりXcode11以前でビルドしたアプリはiOS14では動かせないということでしょうか? > > 反対に、Xcode12でswift4.2などでビルド(もしかしたらそんなことはできないのかも知れませんが)した場合、iOS14では動くのでしょうか? > > 動作可能なiOSバージョンというものが、swiftのバージョンに紐づいているのか、Xcodeのバージョンに紐づいているのか、分かりません。 > > > こちらも考え方は同じです。iOS14特有の機能を使おうと思ったり、あるいは既存のアプリをiOS14で動かしたときに起こるバグを修正しようと思ったときにはXcode12が必要です。いっぽうで、iOS13.xまでの機能、Swift5.2.4までの書き方でビルドしたアプリがiOS14で使えないというわけではありません。 というか、もしそうだとしたら、iOSの新しいバージョンが公開されるたびに大混乱になるはずですね。 とくに、iOS14は発表が急だったので、各社あわてて対応していました。(マジでひどかった......) おそらくiPhone実機なんかをお持ちだと思いますが、iOS14ローンチの数日後にAppStoreでアプリの更新が沢山来ていたことを覚えていませんか。でも、更新しなくてもアプリは動いていましたよね。バグは出ていたかもしれませんが......