【发布时间】:2015-07-06 17:40:39
【问题描述】:
为 Xamarin 绑定 iOS lib.a 时,出现以下错误:
btouch: The delegate method Device.SomeDeviceDelegate.CaptureComplete needs to take at least one parameter (BI1003)
绑定已生成Objective Sharpie。
namespace Device
{
// @protocol SomeDeviceDelegate <NSObject>
[Protocol, Model, Preserve]
[BaseType(typeof(NSObject))]
interface SomeDeviceDelegate
{
// @optional -(void)CaptureComplete;
[Export("CaptureComplete")]
void CaptureComplete();
}
// @interface SomeDevice : NSObject
[Protocol, Model, Preserve]
[BaseType(typeof(NSObject), Delegates = new[] { "WeakDelegate" }, Events = new[] { typeof(SomeDeviceDelegate) })]
interface SomeDevice
{
[Wrap("WeakDelegate")]
SomeDeviceDelegate Delegate { get; set; }
// @property (assign, nonatomic) id<SomeDeviceDelegate> delegate;
[NullAllowed, Export("delegate", ArgumentSemantic.Assign)]
SomeDeviceDelegate WeakDelegate { get; set; }
}
}
注意。我已将名称更改为 SomeDevice 以隐藏硬件/设备名称 (NDA)。
编译器抱怨// @optional -(void)CaptureComplete; 和各自的绑定CaptureComplete() 没有参数并且它至少需要一个。
问:我需要做什么来绑定这个委托?
我已经尝试过Binding Types Reference Guide 并尝试过应用
-
EventArgs属性 -
NoDefaultValue属性 -
DefaultValueFromArgument属性
更新
我误解了 NoDefaultValue 和 DefaultValueFromArgument 属性,它们在委托返回值(例如 bool)时使用,因为返回会干扰事件的 Xamarin 包装。
【问题讨论】:
标签: c# ios objective-c xamarin xamarin.ios