C# 在MonoMac中使用数组的正确方法
我刚开始在MonoMac做一个项目,到目前为止,这个项目很酷。但还有一些事情我不确定。例如:如何使用数组?我发现:当我从正在调用的方法中得到一个C# 在MonoMac中使用数组的正确方法,c#,objective-c,arrays,nsarray,monomac,C#,Objective C,Arrays,Nsarray,Monomac,我刚开始在MonoMac做一个项目,到目前为止,这个项目很酷。但还有一些事情我不确定。例如:如何使用数组?我发现:当我从正在调用的方法中得到一个NSArray时,我试图得到该数组中的一个自定义对象,我一直得到类似“无法将type System.IntPtr转换为MyType”的结果 我得到的是数组。但是如果我想自己创建一个数组呢?NSArray的实现不允许我实例化它。因此,如果我得到了正确的答案,我应该使用像这样的普通数组 int[] intArray = int[10]; 分别是一个强类型数
NSArray
时,我试图得到该数组中的一个自定义对象,我一直得到类似“无法将type System.IntPtr转换为MyType
”的结果
我得到的是数组。但是如果我想自己创建一个数组呢?NSArray的实现不允许我实例化它。因此,如果我得到了正确的答案,我应该使用像这样的普通数组
int[] intArray = int[10];
分别是一个强类型数组,我不知道如何在C#中使用它
那么这里怎么走
谢谢–f一般来说,使用NSArray不是很有用,因为您最终会遇到上述问题 这就是为什么通常应该将NSArray转换为强类型数组的原因。MonoMac低级运行库为已经代表您的所有回调执行此操作 通常您会这样做:
YourType [] stronglyTyped = NSArray.ArrayFromHandle<YourType> (arrayIntPtrHandle);
也就是说,如果您使用API绑定工具访问Objective-CAPI,那么您没有正确地绑定东西。您的合约API应该具有强类型版本,而不是NSArray,因此:
[Export ("getElements")]
NSArray GetElements ();
应成为:
[Export ("getElements")]
YourType [] GetElements ();
[Export ("getElements")]
NSArray GetElements ();
[Export ("getElements")]
YourType [] GetElements ();