gpt4 book ai didi

c# - 如何将 Objective-C initXXX 方法绑定(bind)到具有相同类型参数的 Xamarin.iOS 构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:41:22 25 4
gpt4 key购买 nike

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

    -(id)initWithImageArray:(NSArray *)images;

-(id)initWithPNGorJPEGDataArray:(NSArray *)data;

如果我们准备通过 Objective Sharpie 将其绑定(bind)到 Xamarin.iOS,操作系统会创建这样的模板:

    // -(id)initWithImageArray:(NSArray *)images;
[Export ("initWithImageArray:")]
IntPtr Constructor (NSObject [] images);

// -(id)initWithPNGorJPEGDataArray:(NSArray *)data;
[Export ("initWithPNGorJPEGDataArray:")]
IntPtr Constructor (NSObject [] data);

但是这些c#接口(interface)都是一样的,所以编译不成功。

是否有任何策略可以绑定(bind)此类 Objective-C 库?

谢谢,小黑

最佳答案

有几种方法。最简单的方法是(从您的库的文档中)找出 NSArray 中使用的类型。

例如如果第一种情况被记录为 UIImage 数组,而第二种情况记录为 NSData

-(id)initWithImageArray:(NSArray *)images; // array of UIImage
-(id)initWithPNGorJPEGDataArray:(NSArray *)data; // array of NSData

然后可以绑定(bind)为

IntPtr Constructor (UIImage [] images);

IntPtr Constructor (NSData [] data);

这将为两个构造函数提供不同的签名、正确编译并进行更好的绑定(bind)(因为它比使用 NSObject 类型更安全)。

关于c# - 如何将 Objective-C initXXX 方法绑定(bind)到具有相同类型参数的 Xamarin.iOS 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28535032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com