トップページ > プログラム > 2019年03月31日 > bRWYuFR70

書き込み順位&時間帯一覧

27 位/167 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000010000000100002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ fb5f-mad5)
Swift part12

書き込みレス一覧

Swift part12
73 :デフォルトの名無しさん (ワッチョイ fb5f-mad5)[sage]:2019/03/31(日) 11:23:43.71 ID:bRWYuFR70
swift5書き換えでつまづいています。
Data型でc構造体を触る下記の方法がdeprecatedになりました。どのように書き換えれば良いのか教えて下さい。

typealias MutableCStructPtr = UnsafeMutablePointer<cStruct>

var cStruct : Data = Data.init(count: sizeOfCStruct)

cStruct.withUnsafeMutableBytes({(ptr : MutableCStruct) in
cStruct.pointee.param1 = newValue
})

代わりにUnsafeMutableRawPointer経由でc構造体を操作する方法を探していますが見つけられていません。
Swift part12
74 :デフォルトの名無しさん (ワッチョイ fb5f-mad5)[sage]:2019/03/31(日) 19:07:54.98 ID:bRWYuFR70
以下の記述ではコンパイルが通りました。
この記述では、copyOnWriteされない理解で良いでしょうか。

typealias MutableCStructPtr = UnsafeMutablePointer<cStruct>

var structData : Data = Data.init(count: sizeOfCStruct)

structData.withUnsafeMutableBytes { (p:UnsafeMutableRawBufferPointer) in
let ptr : MutableCStructPtr = p.bindMemory(to: MutableCStructPtr.self).first!
ptr.pointee.param1 = newValue
}

あるいは

structData.withUnsafeMutableBytes { (p:UnsafeMutableRawBufferPointer) in
let ptr : MutableCStructPtr = unsafeBitCast(p, to: MutableCStructPtr.self)
ptr.pointee.param1 = newValue
}


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。