2016-03-28 22 views
0

我想将C库实现到我的iOS项目中。我正在使用迅捷的语言。用于C库中的数组的UnsafeMutablePointer

我有一个函数,其中输入参数 - ,其中输出值被存储 - 是芳通常的C双阵列:

double ar[6]; 
///... 
err = c_lib_func(ar); 

如果我初始化内部迅速像var ar: [Double] xcode的说我必须使用

UnsafeMutablePointer。但是在文档里面,我还没有找到如何初始化n长度为UnsafeMutablePointer的数组。我只能做这样的事情: var ar : UnsafeMutablePointer<Double>。但我可以理解如何将它初始化为6长度数组。请帮帮我。

如果我使用

ar = [Double] 
err = c_lib_func(ar); 

Xcode的显示了我这个错误:

/Users/admin/Documents/projects/myApp/myApp/file.swift:46:46: Cannot convert value of type '[Double]' to expected argument type 'UnsafeMutablePointer'

+0

用'var ar:[Double]'你应该可以调用'c_lib_func(ar)'。 – jtbandes

+0

@jtbandes,no。 xCode显示关于使用UnsafeMutablePointer的错误 – Vyacheslav

+0

请显示您的代码和错误:[ask] – jtbandes

回答

1

在斯威夫特,[Double]是双值的数组这是不是你所追求的。如果你想初始化一个UnsafeMutablePointer你可以使用:

var ar = UnsafeMutablePointer<Double>.alloc(6) 

使用ar.dealloc(6)再次释放内存。

+0

在swift里面使用'dealloc'很重要吗? – Vyacheslav

+0

是的,值与传递给alloc()的值相匹配也很重要。 –