2017-06-14 6 views
1

私はあなたがをベータを通して提出できるかどうか尋ねるだけの質問に似た、たくさんの質問を見つけました。これはではない私は答えを探しています。Xcodeベータ版で開発し、最新のXcode GMから提出することはできますか?

Xcode 9のベータ版ではなく、を使ってアプリケーションを開発できるのかどうか不思議ですが、Xcode 8から送信してください。

すべてのプログラミングはXcode 9ベータ版で行われますが、アプリケーションをリリースするときは、Xcode 8でプロジェクトを開いてアーカイブして提出します。

これは機能するものですか?そうでない場合、それはなぜでしょうか?

:私はスウィフト3.2を使用されるだろう、ない4.

+3

私は、これは下のバージョンへの移行は良い考えではないことを信じて、あなたも、あなたのストーリーボードまたはXIBファイルを開くことができません。 – Maddy

+0

それはなぜでしょうか?私の現在のXcode 9プロジェクトのストーリーボードはこれまでXcode 8で正常にオープンしています – smandrus

答えて

0

代わりスウィフト3.2のスウィフト3.1を使用して提出されるだろうXcodeの8に提出します。

ですから、そのような条件付きのコードを書くことができます。

#if swift(>=3.2) 
    // code builds for Xcode 9 beta 
#else 
    // code builds for Xcode 8 
#endif 

だから実際には、Xcodeの2つのバージョンとの互換性を与えるが、それはコンパイル同じコードではありません。

これは、ポッドやフレームワークにとって便利です。

swift 3.1とswift 3.2でコードが異なる必要がある例は、関数swap()を使用する場合です。 example of use case

extension Array { 
    mutating func unstableShuffle() { 
     for i in stride(from: count - 1, to: 0, by: -1) { 
      #if swift(>=3.2) 
       swapAt(i, Int(arc4random_uniform(UInt32(i)))) 
      #else 
       swap(&self[i], &self[Int(arc4random_uniform(UInt32(i)))]) 
      #endif 
     } 
    } 
} 
+0

条件付きコンパイルは、Swift 3.2の構文が異なるエリアでのみ必要でしょうか?これは、Xcodeのベータ版を使って開発されたとしても、App Storeに正常に提出することを意味しますか? – smandrus

+0

はい、[AppCode](https://www.jetbrains.com/objc/)で開発し、Xcode 8でビルドして提出することもできます。 –

関連する問題