2016-07-10 2 views
0

多くのC/Obj-C APIはvoidへのポインタを扱います。これらの型は通常、UnsafeMutablePointerまたはUnsafePointer(const void *の場合)として表されます。これらの値を[Float]や[UInt8]のようなパックされたデータ配列に再解析する典型的な方法は何ですか?UnsafeMutablePointer <Void>を空ではないタイプの配列に型変換するための慣用句?

+2

あなたは、ユースケースを追加することもでき、質問があまりにもありますジェネリック。例えば。なぜそれらを配列に変換したいのですか? – hnh

+0

具体的なシナリオは、UnsafePointer を返すMTLBuffer.contents()の使用です。なぜなら、データはAPIに関するビットの単なるバッグなのでです。呼び出しコードは正しい解釈を知っていますが、それに応じて型を再解釈する必要があります。 – Fooberman

答えて

0

最も簡単な方法は、UInt8ポインタにキャストすることです:

let buffer = UnsafeMutablePointer<UInt8>(MTLBuffer.contents()) 

そして、あなたは添字演算子を使用してアクセスすることができます

for index in 0 ..< bufferSize { 
    let foo = buffer[index]  // foo is `UInt8` type 
    ... 
    buffer[index] = bar 
} 
関連する問題