モチベーションは、私が空ポインタを使って何かを渡すC APIでコールバックを使用しようとしています。迅速なポインタのキャストと強制の違いは何ですか?
私はx: UnsafePointer<Void>
があるとします。私はそれが実際にだから、私は適切にポインタを変換したい知っている。 unsafeBitCastの使用と、UnsafePointerをxに適用するだけの違いは何ですか?言い換えれば
は、何らかの方法で
let z = UnsafePointer<MyStruct>(x)
異なる
let y = unsafeBitCast(x, to: UnsafePointer<MyStruct>.self)
ですか?
C APIを使用するために、非常に薄いSwiftレイヤーにC APIをラップすると良いでしょう。このレイヤーでは、Swift値へのvoidポインターからのこの安全でないマッピングを行います。コードの残りの部分はSwiftコードを通り、コードベースはこの非常に不安定なコードではぎとられません。すべてが単一のラッパーコードにまとめられています。 – nhgrif