個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Xamarin に関する事を中心に書いています。 Microsoft MVP for Development Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Microsoft Docs 「Xamarin.iOS API の設計」

はじめに

こんにちは、@hiro128_777です。
Microsoft Docs の Xamarin.iOS のとても良い記事が Human translation されたのでご紹介します。
(この記事、ぜひ Human translation して欲しかったので issue 上げてましたが、それが採用されました。)

ちょっとまだ翻訳がイマイチな部分もありますが、この記事だけで、20くらい PR 上げておいたので、程なく改善されるはずです。

https://docs.microsoft.com/ja-jp/xamarin/ios/internals/api-design/docs.microsoft.com


この記事では、Xamarin.iOSObjective-C の関連によって関して注意しなければならない点がほぼ網羅されています。
Xamarin.iOS でのハマりどころはかなりの部分で、この領域に集約されているので、是非、一読していただきたいです。

その中でも、特に重要な部分をピックアップしました。


NSObject と Dispose の関係とメモリ管理

https://docs.microsoft.com/ja-jp/xamarin/ios/internals/api-design/#nsobjectdocs.microsoft.com

https://docs.microsoft.com/ja-jp/xamarin/ios/internals/api-design/#nsobject-and-idisposabledocs.microsoft.com


Xamarin.iOS において、ネイティブのインスタンスとマネージドのインスタンスが相互運用される場合、必ずリソースの破棄、つまり Dispose() の問題がついて回りますが、適切に破棄するために理解すべき事項の説明です。


デリゲート

https://docs.microsoft.com/ja-jp/xamarin/ios/internals/api-design/#delegatesdocs.microsoft.com


Xamarin.iOSObjective-C では、デリゲートという言葉は違う文脈で用いられます。
デリゲートを使用する目的は一緒ですが、実現方法が違います。
Objective-C では設計のデザインパターンであり、Xamarin.iOS では言語に組み込まれているメソッドを参照する型です。


イベント

https://docs.microsoft.com/ja-jp/xamarin/ios/internals/api-design/#mapping-delegates-to-cdocs.microsoft.com


Xamarin.iOS ではひとつのインスタンスで、Objective-C の selector ベースのイベントと、C#イベントハンドラーベースのイベントをを同時に利用すると、イベントが発火しなくなリますので、ご注意ください。


今回は以上です。