В соответствии с документацией Data in Swift 3 существует инициализатор, который я могу использовать для создания данных из UnsafeRawPointer. На самом деле мне нужно обратное. У меня есть данные, и я хочу создать UnsafeRawPointer, который указывает на байты данных. Вот что я делаю прямо сейчас:
1. let data = <from some where>
2. let unsafePointer = UnsafeMutablePointer<UInt8>.allocate(capacity: data.count)
3. unsafePointer.initialize(to: 0, count: data.count) // is this necessary?
4. data.copyBytes(to: unsafePointer, count: data.count)
5. let unsafeRawPointer = unsafePointer.deinitialize() // this is of the type UnsafeMutalbleRawPointer, and I can use it where UnsafeRawPointer is needed.
Я проверил, что этот код работает в Xcode Playground. Код даже работает без строки номер 3. Я не уверен, в чем разница с линией или без нее. Во всяком случае, мой вопрос: правильно ли я поступаю так, как хочу? Есть ли более простой способ сделать это?