如何在 Monotouch 中子类化 UIApplication?

发布于 2024-12-07 03:29:06 字数 934 浏览 0 评论 0原文

编辑:

几年后,事情变得更容易了。现在可以省略 应用程序和应用程序委托上的 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 异常。姓名:

NSInternalInconsistencyException 原因:无法实例化 UIApplication 子类实例。没有名为 UIApplicationMain 的类 已加载。

所以我猜我缺少一些属性。但什么以及在哪里?

EDIT:

A couple of years later, things are easier. It is now possible to omit the
Register() attributes, both on the application and the app delegate and instead use:

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


In order to be able to override UIApplication.SendEvent() I want to subclass UIApplication:

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

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

In the main.cs I use this code:

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

But it fails with:

Objective-C exception thrown.  Name:

NSInternalInconsistencyException Reason: Unable to instantiate the
UIApplication subclass instance. No class named UIApplicationMain is
loaded.

So I'm missing some attributes I guess. But what and where?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玻璃人 2024-12-14 03:29:06

向您的新类型添加一个 [Register] 属性,例如:

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

这将允许本机端在执行 Main 时实例化正确的类型。

Add a [Register] attribute to your new type, like:

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

That will allow the native side to instantiate the right type when Main gets executed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文