【发布时间】:2014-01-24 22:35:46
【问题描述】:
我正在尝试为 StickNFind 进行绑定以在基于 Xamarin 的项目中使用。
有问题的类是LeDeviceManager,它继承了CBCentralManagerDelegate,这是一个抽象类,UpdateState(m)方法不是绑定的一部分。
这是这个类的 Obj-C 标头:
interface LeDeviceManager : NSObject <CBCentralManagerDelegate>
@property (nonatomic,strong) NSMutableArray *devList;
@property (nonatomic) CBCentralManager *btmgr;
@property (nonatomic,strong) id <LeDeviceManagerDelegate> delegate;
- (id) initWithSupportedDevices: (NSArray *) devCls delegate: (id <LeDeviceManagerDelegate>) del;
- (void) startScan;
- (void) stopScan;
@end
在 Objective Sharpie 的大力协助下,这是我想出的绑定:
[Model, BaseType (typeof(CBCentralManagerDelegate))]
public partial interface LeDeviceManager
{
[Export ("devList", ArgumentSemantic.Retain)]
NSMutableArray DevList { get; set; }
[Export ("btmgr")]
CBCentralManager Btmgr { get; set; }
[Export ("delegate", ArgumentSemantic.Retain)]
LeDeviceManagerDelegate Delegate { get; set; }
[Export ("initWithSupportedDevices:delegate:")]
IntPtr Constructor (NSObject[] devCls, LeDeviceManagerDelegate del);
[Export ("startScan")]
void StartScan ();
[Export ("stopScan")]
void StopScan ();
[Export ("UpdatedState")]
[New] // Added as suggested by another SO post, also tried [Abstract]
void UpdatedState(CBCentralManager mgr);
}
我得到这个错误:
错误 CS0533:StickNFind.LeDeviceManager.UpdatedState(MonoTouch.CoreBluetooth.CBCentralManager)' hides inherited abstract memberMonoTouch.CoreBluetooth.CBCentralManagerDelegate.UpdatedState(MonoTouch.CoreBluetooth.CBCentralManager)' (CS0533) (SNF_Binding)
我该如何解决这个问题:
【问题讨论】:
-
你完成这个绑定了吗?我需要同样的东西,如果你已经做过,我不想重新发明轮子。
-
我确实设法克服了那个错误,但后来我收到了另一个关于 SNF SDK 中一些重复名称的错误,我放弃了。我在使用 SNF 时遇到了很多麻烦,我不推荐他们 - 他们的所有代码都非常糟糕,信标的行为无法预测,我永远无法让他们工作,他们的支持很糟糕。
标签: xamarin.ios xamarin