2016-08-18 61 views
1

我試圖到C的API轉換在夫特3 XCode中8個β6.C API遷移到夫特3 XCode中8個β6

int payloadSize = 100 
char tempBuffer[payloadSize]; 
memset(tempBuffer, 7, payloadSize); 

// Construct the payload. 
NSData *payload = [[NSData alloc] initWithBytes:tempBuffer length:payloadSize]; 

直到XCode的8個β3,將其作爲工作細跟夫特:

let payloadSize = 100 
var tempBuffer:[CChar]? 
memset(&tempBuffer, 7, Int(payloadSize)) 

// Construct the ping packet. 
let payload:NSData = NSData(bytes: tempBuffer!, length: Int(payloadSize)) 

但是在最新的XCode測試版中,它正在創建崩潰。

+1

什麼是崩潰說呢? –

+0

如果在那之前純粹的機會(或運氣不好:) :) - 'tempBuffer'是一個可選的,你從來沒有分配一個值。 –

+0

它只是崩潰,沒有說。它在創建'NSData'對象時崩潰了。使用XCode 8 beta 6. –

回答

1

問題出在線var tempBuffer:[CChar]?。這是一個名爲tempBuffer的變量聲明,其類型爲Optional<Array<CChar>>。但是,它沒有定義該數組。當你嘗試memset它,它不工作,因爲沒有分配內存。

而不是使用memset的,試試這個來代替:

let payloadSize = 100 
let buffer = [UInt8](repeatedValue: 7 count: payloadSize) 

let payload = NSData(bytes: buffer, length: buffer.count) 
+0

然後它如何在swift 2.2和更舊版本的xcode beta版本中運行3.檢查我的實際庫https://github.com/ankitthakur/SwiftPing。我只是將其升級到XCode 8 Beta 6. –

+0

這可能是一個不確定性問題,只是現在才顯示出來。 – Alexander

+0

好吧,謝謝它的工作。 C級api整合/遷移確實是一種痛苦。 –

相關問題