我正在使用sharpie bind命令来获取iOSxamarin库的API接口(interface)

sharpie bind --namespace=XXX --sdk=iphoneos9.2 Headers/*.h
@protocol绑定(bind)有问题:
The type or namespace name `IProfileDelegate' could not be found. Are you missing an assembly reference?

它是这样生成的:
    interface XLibrary : IProfileDelegate
    {
    [Wrap ("WeakProfileDelegate")]
    [NullAllowed]
    MB_ProfileDelegate ProfileDelegate { get; set; }

我知道它会先创建一个空的ProfileDelegate,然后编译器将其填充或用某种方法填充它,但是我的问题是找不到IProfileDelegate
@protocol ProfileDelegate <NSObject>
@required
- (void)GetProfileFinished:(NSString*)_data;
- (void)SetProfileFinished:(NSString*)_data;
@end

此处I符号的区别(我猜这是@protocols保留的符号)。
如何使sharpie生成正确的api定义?

我能够删除所有I前缀,并且可以成功编译,但我希望修复它,以免每次我需要更新源库时都不再重复。

谢谢

最佳答案

请记住,所有obj-c协议(protocol)都充当接口(interface)或抽象类,我建议将“协议(protocol),模型和基类型设置为nsobject”,将所有方法或属性设置为“必需”的另一件事,则需要将其指定为Abstract

[Protocol, Model]
[BaseType (typeof(NSObject))]
interface myAwesomeDelegate
{
  [Abstract]
  [Export(...)]
  void myRequiredMethod(uint param1)

  [Export(...)]
  void anotherMethod()
}

希望这可以帮助您解决问题

关于xamarin - Sharpie绑定(bind)Objective-C @Protocols问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36448006/

10-10 18:27
查看更多