在我的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的空构造函数似乎解决了这个问题,但是我担心它应该在使用已经存在的东西时创建一个新对象(或者仍然应该在至少)。
我是否遗漏了这些内容的含义?
答案 0 :(得分:0)
错误的最后一部分可能包含密钥:
' XXXTableHeaderCell'没有一个带有一个IntPtr参数的构造函数
你是否公开了一个带有IntPtr的构造函数(用该指针调用base)?这用于托管代码和本机代码之间的编组。