C# 如何将Objective-C initXXX方法绑定到Xamarin.iOS';s构造函数,哪个具有相同类型的参数?
在Objective-C中,有时有多个initXXX方法具有相同类型的参数。 比如说,C# 如何将Objective-C initXXX方法绑定到Xamarin.iOS';s构造函数,哪个具有相同类型的参数?,c#,ios,xamarin.ios,xamarin,C#,Ios,Xamarin.ios,Xamarin,在Objective-C中,有时有多个initXXX方法具有相同类型的参数。 比如说, -(id)initWithImageArray:(NSArray *)images; -(id)initWithPNGorJPEGDataArray:(NSArray *)data; 如果我们准备通过Objective Sharpie将其绑定到Xamarin.iOS,操作系统将创建这样的模板: // -(id)initWithImageArray:(NSArray *)images
-(id)initWithImageArray:(NSArray *)images;
-(id)initWithPNGorJPEGDataArray:(NSArray *)data;
如果我们准备通过Objective Sharpie将其绑定到Xamarin.iOS,操作系统将创建这样的模板:
// -(id)initWithImageArray:(NSArray *)images;
[Export ("initWithImageArray:")]
IntPtr Constructor (NSObject [] images);
// -(id)initWithPNGorJPEGDataArray:(NSArray *)data;
[Export ("initWithPNGorJPEGDataArray:")]
IntPtr Constructor (NSObject [] data);
但这些c#接口是相同的,因此无法成功编译
有什么策略可以绑定这种类型的Objective-C库吗
谢谢,
高平有几种方法。最简单的方法是(从库的文档中)找出
NSArray
中使用的类型
例如,如果第一个案例记录为UIImage
数组,第二个案例记录为NSData
-(id)initWithImageArray:(NSArray *)images; // array of UIImage
-(id)initWithPNGorJPEGDataArray:(NSArray *)data; // array of NSData
然后它可以被绑定为
IntPtr Constructor (UIImage [] images);
IntPtr Constructor (NSData [] data);
这将为两个构造函数提供不同的签名,正确编译并生成更好的绑定(因为它比使用
NSObject
更安全)。感谢您的回答!