Objective c 绑定协议无法通过协议
使用Xamarin为一些外部代码创建绑定库时,我遇到了一个问题,尽管(据我所知)在协议中实现了所有选择器,但在Obj-C代码中,我的代理未能通过Objective c 绑定协议无法通过协议,objective-c,xamarin,janrain,Objective C,Xamarin,Janrain,使用Xamarin为一些外部代码创建绑定库时,我遇到了一个问题,尽管(据我所知)在协议中实现了所有选择器,但在Obj-C代码中,我的代理未能通过conformsToProtocol检查,因此代码无法工作 下面是Objective-C头文件的样子(): 这可以编译,并且似乎工作得很好,只是我遇到了一个特定方法的问题,该方法似乎不想调用我的委托类中的方法。经过大量的挖掘(以及艰苦的学习Objective-C),我相信我已经解决了这个问题。在我绑定的库中,我有: if ([delegate c
conformsToProtocol
检查,因此代码无法工作
下面是Objective-C头文件的样子():
这可以编译,并且似乎工作得很好,只是我遇到了一个特定方法的问题,该方法似乎不想调用我的委托类中的方法。经过大量的挖掘(以及艰苦的学习Objective-C),我相信我已经解决了这个问题。在我绑定的库中,我有:
if ([delegate conformsToProtocol:@protocol(JRCaptureDelegate)] &&
[delegate respondsToSelector:@selector(captureSignInDidSucceedForUser:status:)])
[Adopts("JRCaptureDelegate")]
public class SignIn : JRCaptureDelegate
{
// overrides for each method
}
通过一点DLog
ing,我发现我的代理未通过conformsToProtocol
检查(尽管它确实通过了respondsToSelector
检查)
那么,当我的类实现了协议中的所有方法时,为什么它会失败呢。我错过了什么
我的类实现了传递给各种方法的委托,这些方法采用jrcapturedegate
,如下所示:
public class SignIn : JRCaptureDelegate
{
// overrides for each method
}
好吧,我想我可能已经破解了。我在我的类中添加了
adoptions
属性(在Xamarin文档的各个地方都有模糊的提及,但在创建绑定库时并不建议这样做)。现在我有了这个:
if ([delegate conformsToProtocol:@protocol(JRCaptureDelegate)] &&
[delegate respondsToSelector:@selector(captureSignInDidSucceedForUser:status:)])
[Adopts("JRCaptureDelegate")]
public class SignIn : JRCaptureDelegate
{
// overrides for each method
}
现在它通过了
conformsToProtocol
检查。我不确定为什么这不是自动的,因为我正在实现JRCaptureDelegate接口/协议。这是正确的,目前我们不会对类似协议的conformsToProtocol自动响应yes(但我们会)。这似乎仍然没有添加。有关于这个的更新吗?