1

Monocrossを使用して(MonoTouchを使用して)単純なアプリを作成し、iOSデバイス用にコンパイルすると、次のような悪い警告が表示されます。

警告MT4112:レジストラがジェネリック型MonoCross.Touch.MXTouchViewController`1を検出しました。ジェネリック型をObjectiveCに登録することはサポートされておらず、ランダムな動作やクラッシュにつながります。(MT4112)。

iOSデバイスでジェネリックスを使用してMonoTouchを使用することについて見つけたすべてを読みましたが、ほとんどサポートされていません。私のアプリは現在実際のデバイスで動作しますが、警告が気になります。

私の質問は、最も単純なアプリでもこれらの警告が表示されたときのモノクロスの状態はどうなっているのかということだと思います。それはまだプロの使用の準備ができていませんか、それともジェネリックがモノクロスで使用される方法に関連しない警告ですか?

Xamarin.iOSドキュメントから次を追加することもできます:「Xamarin.iOSは現在、NSObjectクラスの汎用サブクラスの作成をサポートしていません」

これはまさにMonocrossが行うことであり、たとえばMXTouchTableViewControllerクラスです。

4

1 に答える 1

4

これにはいくつかの歴史があります。NSObjectの汎用サブクラスの作成はサポートされたシナリオではありませんでしたが、残念ながら、MonoTouchは強制されず、この事実について警告されませんでした。ですからもちろん人々はまさにこれをすることになりました。

それからある日、私は本当の特異なバグのように見えるものを追跡しなければなりませんでした、そしてそれは問題のプロジェクトがNSObjectの一般的なサブクラスを使用していたためであることがわかりました(何時間ものイライラするデバッグの後)。正確な詳細は重要ではありませんが、MonoTouchに警告が追加されたのはそのときです。

ここでの私のポイントは、人々が問題にぶつかることなく、NSObjectの汎用サブクラスを長い間使用しているということです。アプリを広範囲にテストする場合(とにかく実行する必要があります)、これについて心配する必要はありません。

ただし、奇妙で説明のつかない動作に遭遇した場合は、MonoTouchでバグを見つけたという主張を調べる前に、これらの警告を修正するように求められる可能性があります。

于 2013-02-28T22:25:49.307 に答える