Играя с необработанными данными в Swift, я наткнулся на кое-что, чего не понимаю.
NSData имеет конструктор:
init(bytes: UnsafePointer<Void>, length: Int)
где первый параметр bytes явно имеет тип UnsafePointer.
Однако, если я передам объект [Byte] в этот конструктор, не только компилятор не жалуется, но работает нормально.
Но если я попытаюсь преобразовать [Byte] в UnsafePointer, у меня ничего не получится.
Как это работает ?
Например (вы можете попробовать это в Playgrounds):
let buffer: [Byte] = [0x00, 0xff]
let data = NSData(bytes: buffer, length: buffer.count) // no error
data.description
var pointer: UnsafePointer<Void>
// comment this line to avoid compiler error
pointer = buffer // error
я знаю, что могу сделать
UnsafePointer<Void>(buffer)
но мой вопрос в том, что неявно делает конструктор NSData, что мне не нужно этого делать.