UnsafeMutableRawPointer から UnsafeMutablePointer<T> にキャストする方法
UnsafeMutableRawPointer
から UnsafeMutablePointer<T>
にキャストする方法をずっと悩んでいましたが、やっとわかったので、ここにメモしておきます。
わざとらしいコードですが、一旦 UnsafeMutableRawPointer
にしたポインタを UnsafeMutablePointer<T>
にキャストして、pointee
を更新する事で、オリジナルも更新された事がわかります。Playground でも動作します。
// Swift 3.0 - Playground Ready
struct Context {
var city = "Tokyo"
}
var context: Context = Context()
let rawPtr = UnsafeMutableRawPointer(&context)
let opaquePtr = OpaquePointer(rawPtr)
let contextPtr = UnsafeMutablePointer<Context>(opaquePtr)
context.city // "Tokyo"
contextPtr.pointee.city = "New York"
context.city // "New York"
Author And Source
この問題について(UnsafeMutableRawPointer から UnsafeMutablePointer<T> にキャストする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/codelynx/items/64dd046f61267e9905e2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .