これは、Xamarin.iOSが最近変更されたためです。
従来、MonoTouchでは、ネイティブピアなしで管理対象オブジェクトを作成できました。ただし、動作はタイプ間で一貫性がなく、サードパーティライブラリのタイプの場合、インスタンスが使用されると、スタックオーバーフローでプロセスがクラッシュする可能性があります。そのため、デフォルトの動作が変更されました。管理対象オブジェクトに対してネイティブピアを作成できない場合、例外がスローされます。例外メッセージにも記載されているように、この動作は値MonoTouch.ObjCRuntime.Class.ThrowOnInitFailureによって制御されます。falseに設定すると、古い動作に戻ります。
あなたの場合、対応するObjective-CクラスがないときにUIAlertViewDelegateインスタンスを作成しようとしているため(Objective-CクラスではなくUIAlertViewDelegate
Objective-Cプロトコルであるため)、例外が発生します。
user1010710がすでに述べたように、解決策は単純です。null
代わりにを使用してnew UIAlertViewDelegate()
ください。結果は同じです。以前のバージョンのXamarin.iOSでは、ハンドルがIntPtr.ZeroであるマネージドUIAlertViewDelegateインスタンスになり、そのIntPtr.Zero値がネイティブコンストラクターに渡されます。これは、パスしたときに起こることですnull
。