第三方库中的MonoTouch绑定通知

时间:2013-01-22 20:04:05

标签: c# ios objective-c binding xamarin.ios

我正在为IDTech CC swipers创建绑定。我一直在反对这个问题。我被困在如何订阅第三方库引发的事件。具体来说,我需要知道卡片刷卡何时发生。

//Notification identifiers used with NSNotificationCenter
//physical attachment related
extern NSString * const uniMagAttachmentNotification;
extern NSString * const uniMagDetachmentNotification;
//connection related
extern NSString * const uniMagInsufficientPowerNotification;
extern NSString * const uniMagPoweringNotification;
extern NSString * const uniMagTimeoutNotification;
extern NSString * const uniMagDidConnectNotification;
extern NSString * const uniMagDidDisconnectNotification;
//swipe related
extern NSString * const uniMagSwipeNotification;
extern NSString * const uniMagTimeoutSwipeNotification;
extern NSString * const uniMagDataProcessingNotification;
extern NSString * const uniMagInvalidSwipeNotification;
extern NSString * const uniMagDidReceiveDataNotification;
//command related
extern NSString * const uniMagCmdSendingNotification;
extern NSString * const uniMagCommandTimeoutNotification;
extern NSString * const uniMagDidReceiveCmdNotification;
//misc
extern NSString * const uniMagSystemMessageNotification;

文档说这应该有效:

    [Notification]
    [Field ("uniMagAttachmentNotification")]
    NSString uniMagAttachmentNotification { get; }

它无法编译。

obj/Debug/ios/magTechBinding/uniMag.g.cs(637,95): error CS0117: `MonoTouch.Constants' does not contain a definition for `magTechBindingLibrary'
obj/Debug/ios/magTechBinding/uniMag.g.cs(637,77): error CS1502: The best overloaded method match for `MonoTouch.ObjCRuntime.Dlfcn.dlopen(string, int)' has some invalid arguments
obj/Debug/ios/magTechBinding/uniMag.g.cs(637,77): error CS1503: Argument `#1' cannot convert `object' expression to type `string'

非常感谢任何想法或帮助!

1 个答案:

答案 0 :(得分:5)

尝试:

[Field ("uniMagAttachmentNotification", "__Internal")]

第二个参数告诉在哪个库中查找该字段。如果没有一个发生器推测,你就会有一个常数准备就绪。

现在,由于您将链接第三方静态(.a)库,它将成为最终可执行文件的一部分。这就是为什么必须将__Internal用作库名(它意味着查看主可执行文件内部)。