我正在使用sharpie
bind
命令来获取iOS
的xamarin
库的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/