2016-09-16 52 views
0

轉換爲斯威夫特3我得到的編譯器錯誤:如何從Swift 3中的不透明指針創建一個類型化指針?

Cannot invoke initializer for type 'UnsafeMutablePointer' with an argument list of type '(UnsafeMutableRawPointer?)'

試圖創建一個不透明的指針類型的指針時:

let imageRef = myUIImage.cgImage! 
let context = CGContext(...)! 
let rect = CGRect(...) 
context.draw(imageref, in: rect) 

var data = context.data 
var dataType = UnsafeMutablePointer<UInt8>(data) //Throws the error 

爲什麼這個不行?

+0

比較[如何從UnsafeMutableRawPointer中獲取字節?](http://stackoverflow.com/questions/38983277/how-to-get-bytes-out-of-an-unsafemutablerawpointer) –

回答

0

content.data返回UnsafeMutableRawPointer。它有一個bindMemoryassumingMemoryBound方法轉換爲類型指針:

let dataType = data.bindMemory(to: UInt8.self, capacity: n) // UnsafeMutablePointer<UInt8> 

我沒有機會來測試什麼n是的,但我懷疑這會是這樣的:

n = width * height * bitsPerPixel/8