2016-03-28 26 views
0

C kütüphanesini iOS projemde uygulamak istiyorum. Hızlı dil kullanıyorum. I var ar: [Double] XCODE gibi ani içinde ilk durumunaC kütüphanesinde dizi için UnsafeMutablePointer

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

I

kullanmak zorunda söyler: - çıkış değerleri depolanır - ar olağan C çift dizi

I girdi parametresi bir işlevi vardır UnsafeMutablePointer. Ancak, dokümanlar içinde, UnsafeMutablePointer için n-uzunluk dizisini nasıl başlatacağımı bulamadım. Böyle bir şey yapabilirim: var ar : UnsafeMutablePointer<Double>. Ama 6 uzunluklu dizi olarak nasıl başlatılacağını anlayabiliyorum. Lütfen bana yardım et. [Double] Sonra ne değildir çift değerlerin bir dizidir, Swift ise

/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]' ile 'c_lib_func (ar)' diyebilmelisiniz. – jtbandes

+0

@jtbandes, no. xCode UnsafeMutablePointer – Vyacheslav

+0

kullanarak hatası göster Lütfen kodunuzu ve hatayı göster: [sor] – jtbandes

cevap

1

:

Ben

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

XCode kullanıyorum Eğer bana bu hatayı gösterir. Bir UnsafeMutablePointer başlatmak istiyorsanız sadece kullanabilirsiniz:

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

Kullanım ar.dealloc (6) tekrar belleği serbest bırakmak için.

+0

demek istediğin kodun bir örneğini yazabilir misin? İçinde 'dealloc' kullanmak hızlı mıdır? – Vyacheslav

+0

Evet ve ayrıca değerin, alloc() öğesine iletilen değerle eşleşmesi de önemlidir. –