我从我的swift viewController通过链接头调用.mm(objective-c/C++)类方法。他们已成功链接。但是,我正在努力传递与参数匹配的正确数据类型。 这里就是我称之为迅速如何在swift和objective-c之间匹配2d数组数据类型?
OpenCVWrapper.thefunc(array1, otherstuff);
功能.. .array1
类型为[[Int]]
,这里是在Objective-C
+(NSString*) thefunc: (int[][2])array1 otherstuff(int)other{
定义,但我得到的错误
Cannot convert value of type '[[Int]]' to expected argument type 'UnsafeMutablepointer<(Int32)(Int32)>!'
我的问题是,如何匹配数据类型,以便它们都处理Int类型的基本2D数组?
UPDATE:
值/结构的问题:
结构从迅速传递:在OC接收
结构:
真正体会到了深入的答案,我会尝试明天吧 - 会回复你。干杯。 –
现在就开始工作。为什么'[(Int32,Int32)]'而不是'[[Int32]]'?欢呼声 –
@harrylakins,正如我写的,C阵列是一个连续的记忆区域。但在Swift中,'[Int32]'实际上是一个包含对作为可变大小数组的对象的间接引用的结构体。内存表示是完全不同的。因此,Swift将固定大小的C数组作为Swift元组,将每个元素放在一个连续的区域中。 – OOPer