以编程方式创建的NSTableView抛出无法封送Objective-C对象(Xamarin)

时间:2016-01-18 22:36:21

标签: c# xamarin mono monomac xamarin.mac

在我的Xamarin Mac项目中,我以编程方式设置了NSTableView。我有一个自定义的NSTableHeaderCell,我用于列标题单元格。由于某些原因,某些机器上出现了错误

Failed to marshal the Objective-C object 0x121f77e90 (type: XXXTableHeaderCell). Could not find an existing managed instance for this object, nor was it possible to create a new managed instance (because the type 'XXXTableHeaderCell' does not have a constructor that takes one IntPtr argument). 

我知道如果您从nib / xib加载,可能会引发这种情况,但我会在代码中构建它。我也知道如果您的托管对象获得了GC,可能会发生这种情况,但是标题单元格和列对象应该由表格视图保留。

放入一个带有IntPtr的空构造函数似乎解决了这个问题,但是我担心它应该在使用已经存在的东西时创建一个新对象(或者仍然应该在至少)。

我是否遗漏了这些内容的含义?

1 个答案:

答案 0 :(得分:0)

错误的最后一部分可能包含密钥:

' XXXTableHeaderCell'没有一个带有一个IntPtr参数的构造函数

你是否公开了一个带有IntPtr的构造函数(用该指针调用base)?这用于托管代码和本机代码之间的编组。