編集:
H2CO3 からの以下の回答は、私をほとんど幸せにします。しかし、それは 1 つのことを説明していません: SDK6 に対してアプリをビルドするときにランタイム例外が発生するのはなぜですか (UIPageViewController は、親コントローラーに追加する前に 1 つの子コントローラーが必要です)、SDK5 に対してビルドするときはそうではありませんか? Rolf からの回答は、何が起こっているかを説明しています。デバイスは、アプリが構築された SDK を認識し、最大限の互換性を確保するために異なる動作をします。
iOS SDK のバージョン、MonoTouch のバージョン、およびさまざまな iOS のバージョンと格闘しているうちに、「結局、iOS SDK とは何なのか? 」と考え始めました。
つまり、Xcode 4.4 をインストールすると、iOS SDK 5 が取得されます。Xcode 4.5 をインストールすると、iOS SDK 6 が取得されます。これまでのところ問題はありません。
- ここで、何かを実行するアプリを作成する
targets iOS 5
としnot use any iOS 6 specific
ます。私はこのアプリを構築しusing iOS SDK 6
ます。 - 次に、ビルドします
same app
が、使用しますiOS SDK 5
。
次に、両方のバージョンのアプリを iOS 6 デバイスで実行します。
なぜ彼らは異なる振る舞いをするのですか?小さな違いがあります。たとえば、ページ ビュー コントローラーを子として親コントローラーに追加する前に子コントローラーが設定されていない場合、UIPageViewController は例外をスローします。
私の理解では、コールバック、機能、およびすべては、SDK からではなく、iOS オペレーティング システムからのものです。ただし、OSはどちらの場合も同じです。
iOS 6 固有の機能を使用したい場合は、SDK 5 には UICollectionView が存在しないため、iOS SDK 6 を使用する必要があることを完全に理解しています。しかし、このビューの UI コードは明らかにアプリに含まれていません。それ以外の場合は、iOS5 でも動作します。したがって、コレクション ビューは、OS によって提供される共有ライブラリから取得されます。
その上に、MonoTouch があります。MonoTouch の各バージョンが、バグを修正していないバインディングの拡張にすぎないと仮定すると、どの MT バージョンを使用しても問題ありません。
私の質問の要約は次のとおりです: iOS バージョン、iOS SDK バージョン、MonoTouch バージョン、およびアプリケーションのターゲット バージョンはどのように連携しますか?