【问题标题】:Monotouch iOS binding works on iOS 6 but fails under iOS 5Monotouch iOS 绑定适用于 iOS 6,但在 iOS 5 下失败
【发布时间】:2013-05-07 21:57:55
【问题描述】:

我为最新版本的 Chartboost SDK 创建了 Monotouch iOS 绑定。当我在 iOS 6 模拟器上运行它时它工作正常,但在 iOS 5 模拟器上失败。

错误信息:

NSInvalidArgumentException reason: -[__NSCFDictionary setObject:forKeyedSubscript:]: unrecognized selector sent to instance 0x11b8cce0

0   blockpuzzle      0x0016c94e mono_handle_exception_internal_first_pass + 2190
1   blockpuzzle      0x0016e392 mono_handle_exception_internal + 1602
2   blockpuzzle      0x0016eedf mono_handle_exception + 47
3   blockpuzzle      0x001b2012 mono_x86_throw_exception + 306
4   ???              0x09bc5f8f 0x0 + 163340175
5   blockpuzzle      0x002f40ee monotouch_exception_handler + 158
6   CoreFoundation   0x038ce12c __handleUncaughtException + 76
7   libobjc.A.dylib  0x03a5ff43 _objc_terminate + 86
8   libc++abi.dylib  0x03f738de _ZL19safe_handler_callerPFvvE + 13
9   libc++abi.dylib  0x03f73946 __cxa_bad_typeid + 0
10  libc++abi.dylib  0x03f74ab2 _ZL23__gxx_exception_cleanup19_Unwind_Reason_CodeP17_Unwind_Exception + 0
11  libobjc.A.dylib  0x03a5fe15 _objc_exception_destructor + 0
12  CoreFoundation   0x038cfced -[NSObject doesNotRecognizeSelector:] + 253
13  CoreFoundation   0x03834f00 ___forwarding___ + 432
14  CoreFoundation   0x03834ce2 _CF_forwarding_prep_0 + 50
15  blockpuzzle      0x00026777 -[CBAPIConnection sendRequest:success:failure:] + 1175
16  blockpuzzle      0x000262db -[CBAPIConnection sendRequest:success:] + 55
17  blockpuzzle      0x0002361f -[Chartboost startSession] + 468
at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging.void_objc_msgSend (intptr,intptr) <IL 0x0000a, 0x0002c>
at com.blueriver.chartboost.Chartboost.startSession () <IL 0x00016, 0x00028>

我已将项目的 iOS 构建 SDK 版本设置为 6.1,并将部署目标(最低操作系统版本)设置为 4.3。

我错过了什么?

[更新] 我已经把我的绑定放到了 pastebin 上:http://pastebin.com/KfTztyDP。也许有一些帮助。

【问题讨论】:

    标签: c# ios xamarin.ios


    【解决方案1】:

    forKeyedSubscript 是在 iOS 6 中添加的。他们的文档是否说他们支持 iOS 5,或者是否有适用于旧系统的不同版本的库?

    【讨论】:

    • 根据他们的要求:Apps must be compiled with iOS base SDK v6.0 or higher (may still target 4.3+)
    • 您应该联系他们的支持。它们可能不支持 iOS 5,或者您使用的某些方法可能在 iOS 5 上不受支持。
    • 根据他们的支持,只要我将基本 SDK 设置为 v6.0+,它就可以在 iOS 4.3+ 上运行。所以他们不能再提供任何帮助了。
    【解决方案2】:

    感谢 dalexsoto 的回答,我找到了答案:MonoTouch "unrecognized selector sent to instance" not working on iOS5 (but does on iOS6)

    我只需要将 lib arclite.a 添加到我的 Monotouch 绑定项目中,它就可以工作了。

    如果有人遇到相同或类似的问题,只需在此处https://github.com/PSPDFKit/XamarinBindings/tree/master/AlexTouch.PSPDFKit 下载该库并将其添加到您的绑定项目中。
    多亏了新的 Xamarin Studio,您无需摆弄由绑定创建的 dll。只需在主项目中添加对绑定项目的引用,一切都很好。

    【讨论】:

    • 非常感谢 :) arclite 实际上是什么? MonoTouch 的某种支持库?
    • 阅读this article 这是(曾经?)Apple 提供的,以便在 iOS 6 之前提供下标/ARC 支持。在 Xcode 中,您使用 -fobjc-arc 标志来获得相同的功能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2012-09-06
    相关资源
    最近更新 更多