Apple Platform (iOS および Mac)
コード共有
ユーザー インターフェイス要素がないコードの要素の場合、iOS と Mac の間でコードを共有する最善の方法は、ポータブル クラス ライブラリを引き続き使用することです。
何らかのユーザー インターフェイスの動作を行う必要があり、まだ共有する必要があるコードの場合は、共有プロジェクトを使用する必要があります。共有プロジェクトを使用すると、コードを 1 つのプロジェクトで共有するように配置し、参照時に Mac と iOS の両方でコンパイルできます。
Unified API
iOS および Mac プロジェクト用の Unified API では、フレームワークに同じ名前空間が使用されるため、シームレスなコード共有のために、両方のプラットフォームで同じコード ファイルを使用できます。 また、32 ビット ビルドと 64 ビット ビルドの両方を有効にします。 Unified API は 2015 年初頭からテンプレートの既定値であり、すべての新しいプロジェクトで推奨されています。Unified API プロジェクトのみを App Store に送信できます。
Classic API
Note
クラシック プロファイルの非推奨: Xamarin.iOS で新しいプラットフォームが追加されるため、クラシック プロファイル (monotouch.dll) の機能を徐々に非推奨にし始めています。 たとえば、NRC 以外の (new-ref-count) オプションは削除されました。 NRC はすべての統合アプリケーションに対して常に有効になっており (つまり、NRC 以外はオプションではありませんでした)、既知の問題はありません。 今後のリリースでは、ガベージ コレクターとして Boehm を使用するオプションが削除されます。 これはまた、統合アプリケーションでは使用できないオプションでした。 クラシック サポートの完全な削除は、Xamarin.iOS 10.0 のリリースで 2016 年秋に予定されています。
元の (非統合) Xamarin.iOS API と Xamarin.Mac API では、ネイティブ フレームワークに MonoTouch.
または MonoMac.
のいずれかの名前空間プレフィックスがあるため、コード共有がより困難になりました。 開発者が同じファイルに MonoMac 名前空間と MonoTouch 名前空間の両方を参照する using
ステートメントを追加してコードを共有できる空の名前空間をいくつか提供していましたが、これは少し不自然でした。 Classic API は、内部的に配布されるレガシ アプリでのみ引き続き使用する必要があります (Unified API へのアップグレードをお勧めします)。
Classic API から Unified API への更新
Classic API から Unified API にアプリケーションを更新するための詳細な手順があります。
Objective-C ライブラリのバインド
Xamarin を使用すると、バインドを使用してネイティブ ライブラリをアプリに取り込めます。 このセクションでは、次の内容について説明します。
- バインドのしくみ、
- Xamarin に Objective-C コードを取り込めるバインド プロジェクトを手動でビルドする方法、および
- プロセスの自動化に役立つ Objective Sharpie ツールを使用する方法。
ネイティブ参照
Mac/iOS ネイティブ型
C# と F# から透過的に 32 ビットおよび 64 ビット コードをサポートするために、新しいデータ型を導入します。 詳しくは、こちらをご覧ください。
32 ビットおよび 64 ビット アプリのビルド
32 ビットおよび 64 ビット アプリケーションをサポートするために知っておく必要がある情報。
クロスプラットフォーム アプリでのネイティブ型の使用
この記事では、コードを Android や Windows Phone OS などの iOS 以外のデバイスと共有するクロスプラットフォーム アプリケーションで、新しい iOS Unified API ネイティブ型 (nint
、nuint
、nfloat
) を使用する場合について説明します。
ネイティブ型を使用するタイミングに関する分析情報を提供し、クロスプラットフォーム コードで新しい型を使用する必要がある場合に、いくつかの可能なソリューションを提供します。
HttpClient スタックと SSL/TLS の実装セレクター
新しい HttpClient スタック セレクターは、Xamarin.iOS、Xamarin.tvOS、Xamarin.Mac アプリで使用する HttpClient 実装を制御します。 iOS、tvOS、または OS X ネイティブ転送 (OS に応じて NSUrlSession
または CFNetwork
) を使用する実装に切り替えることができるようになりました。
SSL (Secure Socket Layer) とその後継の TLS (トランスポート層セキュリティ) により、System.Net.Security.SslStream
を介した HTTP やその他のネットワーク接続がサポートされます。 新しい SSL/TLS 実装ビルド オプションでは、Mono 独自の TLS スタックと、Mac と iOS に存在する Apple の TLS スタックを活用した TLS スタックを切り替えます。