7

編集:

数年後、物事はより簡単になります。Register()アプリケーションとアプリ デリゲートの両方で属性を省略し 、代わりに以下を使用できるようになりました。

UIApplication.Main(args, typeof(CustomApp), typeof(CustomAppDelegate));


UIApplication.SendEvent() をオーバーライドできるようにするために、UIApplication をサブクラス化したい:

public class UIApplicationMain : UIApplication
{
    public UIApplicationMain () : base()
    {
    }

    public override void SendEvent (UIEvent uievent)
    {
        base.SendEvent (uievent);
    }
}

main.cs では、次のコードを使用します。

public class Application
{
    static void Main (string[] args)
    {
        UIApplication.Main (args, "UIApplicationMain", "AppDelegateBase");
    }
}

しかし、それは失敗します:

Objective-C exception thrown.  Name:

NSInternalInconsistencyException 理由: UIApplication サブクラス インスタンスをインスタンス化できません。UIApplicationMain という名前のクラスはロードされません。

だから、私が推測するいくつかの属性が欠けています。しかし、何をどこで?

4

1 に答える 1

14

次のように、 [Register]属性を新しいタイプに追加します。

 [Register ("UIApplicationMain")]
 public class UIApplicationMain : UIApplication {
    ...

これにより、Main が実行されたときにネイティブ側が適切な型をインスタンス化できるようになります。

于 2011-09-30T11:52:51.240 に答える