Как создать подкласс UIApplication в Monotouch? - PullRequest
6 голосов
/ 30 сентября 2011

EDIT:

Пару лет спустя все стало проще. Теперь можно опустить 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 не является загружен.

Так что мне не хватает некоторых атрибутов, наверное. Но что и где?

1 Ответ

12 голосов
/ 30 сентября 2011

Добавьте атрибут [Register] к вашему новому типу, например:

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

Это позволит исходной стороне создавать экземпляр правильного типа при выполнении Main.

...