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

标签 c# ios xamarin.ios xamarin

在 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/

相关文章:

ios - Swift 2.1 初始化字符串数组的新方法?

ios - Xamarin iOS 6 SDK Xcode 5

c# - 在 Monotouch 中正确使用 XMLRootAttribute

javascript - JQuery 最接近的元素,来自 GridView 中的 TextBox

c# - 将 Linq 查询连接到 DataTable 并将结果连接到 DataView

c# - 以编程方式设置 DateTimePicker 工具提示

ios - 单点触控/WCF : How to consume the wcf service without svcutil

c# - 为 Visual Studio 创建插件

ios - 我应该避免在全局队列中创建 JSContexts 吗?

iphone - SimpleTabBarController 泄漏内存