Monotouch 绑定无法接受委托模型

2024-01-10

我对 Applifier API 有以下绑定:

namespace MonoTouch.Applifier {

[BaseType (typeof (NSObject))]
interface Applifier {
    [Export ("initWithApplifierID:withWindow:supportedOrientations:"), Static]
    Applifier InitWithApplifierId (string applifierId, UIWindow withWindow,
        UIDeviceOrientation firstOrientation, IntPtr orientationsPtr);

    [Export ("initWithApplifierID:withWindow:delegate:usingBanners:usingInterstitials:usingFeaturedGames:supportedOrientations:"), Static]
    Applifier InitWithApplifierId (string applifierId, UIWindow withWindow,
        ApplifierGameDelegate gameDelegate, bool usingBanners, bool usingInterstitials,
        bool usingFeaturedGames, UIDeviceOrientation firstOrientation, IntPtr orientationsPtr);

    [Export ("sharedInstance"), Static]
    Applifier SharedInstance { get; }

    [Wrap ("WeakDelegate")]
    ApplifierGameDelegate Delegate { get; set; }

    [Export ("gameDelegate", ArgumentSemantic.Retain)]
    NSObject WeakDelegate { get; set; }

    [Export ("prepareFeaturedGames")]
    void PrepareFeaturedGames ();

    [Export ("showFeaturedGames")]
    void ShowFeaturedGames ();

    [Export ("showBannerAt:")]
    void ShowBannerAt (PointF position);
}

[BaseType (typeof (NSObject))]
[Model]
interface ApplifierGameDelegate {
    [Export("applifierInterstitialReady"), Abstract]
    void InterstitialReady ();

    [Export("applifierFeaturedGamesReady"), Abstract]
    void FeaturedGamesReady ();

    [Export("applifierBannerReady")]
    void BannerReady ();

    [Export("applifierAnimatedReady")]
    void AnimatedReady ();

    [Export("applifierCustomInterstitialReady")]
    void CustomInterstitialReady ();

    [Export("pauseGame")]
    void PauseGame ();

    [Export("resumeGame")]
    void ResultGame ();
}
}

我的 extras C# 文件中有两个方法可以使调用这些 init 方法变得更容易一些。我认为它们与此处无关,但如果需要,我可以将它们包括在内。

这是“gameDelegate”的 Obj-C 声明:

@property (nonatomic, retain) id<ApplifierGameDelegate> gameDelegate;

以及ApplifierGameDelegate的协议定义:

@protocol ApplifierGameDelegate <NSObject>
- (void)applifierInterstitialReady;
- (void)applifierFeaturedGamesReady;
@optional
- (void)applifierBannerReady;
- (void)applifierAnimatedReady;
- (void)applifierCustomInterstitialReady;
- (void)pauseGame;
- (void)resumeGame;
@end

这里的问题是,无论我尝试什么,我都无法在我的单触摸项目中获取委托实现上的方法来从 Applifier 获取回调。一些注意事项:

我在 Xcode 中有一个非常简单的示例应用程序,遵循确实有效的应用程序教程(测试用例是,当显示特色游戏时,在委托上调用“pauseGame”方法)

  • 我注意到,如果我将任何对象分配给 WeakDelegate,没有任何抱怨,这让我感到惊讶。例如,没有错误或警告: Applifier.SharedInstance.WeakDelegate = new NSString("Foo");
  • 我可以从共享实例中获取委托并自己调用该方法,它确实会被调用。例如:Applifier.SharedInstance.Delegate.PauseGame(); -- 无论我将委托实例分配给 WeakDelegate、Delegate,还是通过接受委托作为参数之一的 init 方法,这都成立。

我现在唯一的结论是,有两件事似乎是正确的:

  • 我可以通过绑定将任何对象分配给 gameDelegate,并且没有任何抱怨
  • 某处无法识别我的 ApplifierGameDelegate 接口与 AppliferGameDelegate 协议匹配。

我注意到的唯一奇怪的事情是,在我在 monotouch-bindings git 项目中探索的所有其他示例绑定中,我没有看到任何其他在委托属性上使用保留属性。

我的单点触控绑定分支可以在以下位置找到https://github.com/trirings/monotouch-bindings https://github.com/threerings/monotouch-bindings。当前的 HEAD 是一个拼凑在一起的解决方法,可以完成我们需要完成的工作,但我仍然希望最终得到一个完整的正确绑定(只需要委托在 C# 领域工作)。我在这个问题中写的原始绑定可以在提交 fdcff4662a36ac42fbe135c098ff7f71cbdf205d 中查看。


我根据你的绑定编写了绑定,请检查这个绑定是否适合你,我没有测试它们,因为我没有ApplifierID

https://github.com/dalexsoto/AlexTouch.Applifier https://github.com/dalexsoto/AlexTouch.Applifier

我向 Delegate 类添加了事件以方便使用,并绑定了大部分 API。

希望这可以帮助

Alex

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Monotouch 绑定无法接受委托模型 的相关文章

  • TestFlight 提供反馈按钮

    我正在使用 iOS 8 的最新 testflight 版本 我将自己添加为内部测试人员 现在当我使用 testflight 打开应用程序时 我找不到反馈按钮 如果有人有任何线索 请告诉我 您在 Testflight 应用程序中提供反馈 打开
  • 如何在 Xamarin Forms 中获取视频的长度

    如何使用 Xamarin Forms 获取视频的长度 我已使用以下链接从视频中获取缩略图 但我需要能够获取视频长度 https forums xamarin com discussion 119450 create thumbnail fr
  • NSCalendar 返回明年第一周上周一的错误日期

    我使用下面的代码使用随机日期来计算上周一 哪个工作文件但我的代码在明年日期中断 下面是相同的代码 NSDate date NSDate dateWithTimeIntervalSince1970 1483620311 228 NSLog c
  • 使用 Protobuf-net,我收到有关 List 未知线路类型的异常

    我已经开始将 Unity iOS 游戏转换为使用 Protobuf net 保存状态 看起来一切正常 直到我将此实例变量添加到GameState ProtoMember 10 public List
  • mgwt - 以编程方式改变方向

    是否可以在 gwt mgwt 应用程序中更改强制执行特定的屏幕方向 可以说我希望用户始终以横向模式使用应用程序 这取决于 是作为phonegap应用程序 而不是在浏览器内部 如果您作为 Web 应用程序运行 则不需要t get any co
  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • iOS Safari Mobile 禁用上一个和下一个选择输入

    上周五我发现了关于此问题的类似问题 但似乎无法再次找到它 如果有人能指出我正确的方向 那就太好了 本质上我在一个页面上有多个选择菜单 第一个在加载时填充 第二个在第一个选择时填充 够简单的 但是 在 iOS 设备中 当您点击选择元素时 它会
  • 如何找到键盘未覆盖的视图部分(UIModalPresenationStyleFormSheet)?

    我有一个视图控制器 显示带有 UITextView 的视图 并且我想在键盘出现时调整视图的大小 以便 UITextView 不会被键盘覆盖 我几乎在所有情况下都可以正常工作 据我所知 仅当视图控制器以 ModalPresentationSt
  • iOS、通用链接、Swift。 continueUserActivity 未调用

    我正在为我们的 iOS 应用程序实现通用链接 这是我的一小部分 AppDelegate private func application application UIApplication openURL url URL sourceApp
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • 如何将 Hex 或 RGB 颜色分配给 Android Converter 中的 MvxColor

    我有如下转换器 我想返回我自己的十六进制或 RGB 颜色 In iOS public class PinkSelectedWhiteUnselectedValueConverter MvxValueConverter
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • AVAssetExportSession 无法导出从 iCloud 下载的视频

    我正在尝试创建从用户相册中选择的视频的缩小版本 输出的最大尺寸为 720p 因此 在检索视频时 我使用 mediumQualityFormat as the deliveryMode 如果用户设备中不存在原始视频或其中等质量版本 这会导致
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 如何在 UICollectionView 中将行居中?

    我有一个UICollectionView与随机细胞 有什么方法可以让我将行居中吗 默认情况下它是这样的 x x x x x x x x x x x x x x 这是所需的布局 x x x x x x x x x x x x 我必须做这样的事
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的

随机推荐

  • 关闭服务器后尝试运行服务器时,Django python已停止工作

    python manage py runserver 第一次工作正常 但是用 ctrl c 关闭它后 我无法再次启动它 我收到错误消息 Python 已停止工作 通过重新启动计算机可以轻松解决此问题 但非常不方便 我也使用 pycharm
  • 编译 Rust 静态库并在 C++ 中使用它:未定义的引用

    我正在尝试编译一个staticRust 中的库 然后在我的 C 代码中使用它 注意这是从 C 调用 Rust 而不是相反 我浏览了我可以在网上找到的所有教程 并回答了类似的问题 我显然做错了什么 尽管我看不出是什么 我为我的问题创建了一个最
  • 无法在 Ubuntu Oracle Java 8 上运行 IntelliJ IDEA CE 12

    我使用的是 Ubuntu 13 04 和 Oracle Java 8 我已经设置了JAVA HOME and PATH变量 以下是尝试运行 IntelliJ 的终端输出 darren ubuntu opt intellij idea ce
  • 如何在 Mac OS X 中检测 SSD?

    是否有一种可靠 快速 确定性的方法 即not基准 来检查 Mac OS X 所在的系统驱动器是否是固态驱动器 还有其他指标可以表明磁盘处理并行访问的能力如何吗 我正在尝试调整我的程序将用于磁盘绑定操作的线程数 我对原始速度或寻道时间不感兴趣
  • Android FileProvider 删除文件

    我正在使用照片库应用程序 由于最近的牛轧糖更新 我无法从图库中删除文件 我发现我必须使用Fileprovider对于文件访问 我尝试了下面的代码 但它说 04 25 12 52 03 031 3204 4133 com zo tns1 E
  • 改造解析JSON动态键

    我是改造的新手 如何使用retrofit解析下面的Json data Aatrox id 266 title a Espada Darkin name Aatrox key Aatrox Thresh id 412 title o Guar
  • MongoDB $graphLookup 尝试获取树结构

    我正在尝试使用新的 MongoDB v3 4 graphLookup 聚合管道 我有这个简单的树集合 其中包含一些节点和父 DBRef id ObjectId 59380657bbdbfb36c18a80f2 name Root node
  • 如何在 Web 视图中单击链接时禁用橙色圆圈效果

    我试图捕捉鼠标点击位置 所以我写了一个onClick in the body标签 但每次我点击页面时 整个页面都会变成橙色一段时间 有什么设置可以禁用这个效果吗 根据this http groups google com group pho
  • 1000以上怎么取?

    如何从数据存储中获取超过 1000 条记录并将所有记录放入一个列表中以传递给 django 从版本 1 3 6 2010 年 8 月 17 日发布 开始 您CAN 从变更日志 http code google com p googleapp
  • 为什么我无法保存我的地址?

    我正在尝试使用 Django 开发一个电子商务网站 我想使用 ajax 来处理我的结账表单 当我添加 Ajax 时 填写表单并单击提交按钮后 我发现我的表单和数据没有通过进入我的管理员来保存 它也没有被重定向到return HttpResp
  • C# 中的不透明字典键模式

    我遇到过很多情况 其中访问键控集合 如字典 中的项目的模式因键的类型不是简单类型 字符串 整数 双精度等 而受到阻碍 并且不是您想要提升为实际命名类的东西 C 3 0 引入了编译器自动生成的匿名类型的概念 不像struct的 这些动态生成的
  • 使用正则表达式从字符串中提取数字

    我找到了这个 C 代码 然后根据我的需要进行了改进 但现在我想让它适用于所有数字数据类型 public static int intRemover string input string inputArray Regex Split inp
  • 删除 R 中 ggplot2 中的单个 x 轴刻度线?

    我正在 ggplot2 中制作条形图 出于演示原因 我需要在一些条形之间留有空格 我正在使用限制scale x discrete插入空条 这给了我需要的间距 群体之间的差距b and c在我的模拟数据中看起来很完美 但是之间的差距a and
  • 丢失代理类的类自定义注释

    我正在使用 Seam 使用 In 注释将 bean 注入到我的控制器中 注入的类有一个自定义注释 当调用injectedClass getClass getAnnotation annotationClass 时 它返回null 调试时 我
  • R:rm和remove有什么区别?

    有什么区别rm and remove http stat ethz ch R manual R patched library base html rm html 没有区别 remove是一个别名 定义为 remove lt rm 查看源代
  • 如何从 XSLT 输出与号 (&)

    我正在转换所有 into amp 在我的 XML 中 以便 XSLT 能够编译 我正在将 XML 样式转换为 HTML 但是 当 XSLT 填充文本框时 我需要 amp 显示为 例如 它显示 you amp me 在文本框中 但我需要查看
  • Mass Transit:当存在不同消息类型时确保消息处理顺序

    我是公共交通新手 我想了解它是否对我的情况有帮助 我正在构建一个使用 CQRS 事件源架构实现的示例应用程序 并且我需要一个服务总线 以便将命令堆栈创建的事件分派到查询堆栈反规范化器 假设我们的域中有一个聚合 我们称之为Photo 以及两个
  • 鼠标悬停时的 WPF TextBlock 样式下划线

    简单的问题 下面的 WPF C 代码可以减轻一些重量吗 我的意思是 WTF 呃 我的意思是 WPF 来吧 你见过CSS吗 我只想在鼠标悬停时在文本下划线 就像链接一样 我真的需要为此添加 9 行吗
  • Zend DB 选择常量 - 表中不存在的列

    我正在尝试使用 Zend DB select 执行此查询 但我无法这样做 这是sql查询 select shopping id shopping details friend as type from shopping 请注意这里我如何指定
  • Monotouch 绑定无法接受委托模型

    我对 Applifier API 有以下绑定 namespace MonoTouch Applifier BaseType typeof NSObject interface Applifier Export initWithApplifi