我正在尝试绑定公开此方法的api(GoogleAnalytic v2 beta):
- (id<GAITracker>)trackerWithTrackingId:(NSString *)trackingId;
GAITracker 是一个协议,所以我的绑定包含这个定义
[BaseType (typeof (NSObject))]
[Model]
interface GAITracker
{
...
}
[BaseType (typeof (NSObject))]
interface GAI
{
[Static][Export ("sharedInstance")]
GAI SharedInstance { get; }
[Export("trackerWithTrackingId:")]
GAITracker TrackerWithTrackingId(string id);
...
}
当我调用 GAI.SharedInstance.TrackerWithTrackingId("MyId") 时,我得到了这个异常
System.InvalidCastException: Unable to cast object of type 'MonoTouch.Foundation.NSObject' to type 'GoogleAnalyticBETA.GAITracker'.
我发现的所有示例都使用协议作为委托(如此处所述),而不是作为方法的返回值。如何创建有效的绑定?