Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Objective-C initXXX方法绑定到Xamarin.iOS';s构造函数,哪个具有相同类型的参数?_C#_Ios_Xamarin.ios_Xamarin - Fatal编程技术网

C# 如何将Objective-C initXXX方法绑定到Xamarin.iOS';s构造函数,哪个具有相同类型的参数?

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

在Objective-C中,有时有多个initXXX方法具有相同类型的参数。 比如说,

    -(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
更安全)。

感谢您的回答!