У меня есть приложение, которое было ранее с помощью UnsafeMutablePointer
для вызова C-функции, как так:Проблемы при использовании withMemoryRebound в Swift 3
var size = HOST_BASIC_INFO_COUNT
let hostInfo = host_basic_info_t.allocate(capacity: 1)
let result = host_info(machHost, HOST_BASIC_INFO,
UnsafeMutablePointer(hostInfo), &size)
После переезда в Swift 3 Xcode Beta 6, Вам будет предложено использовать withMemoryRebound
. Проблема в том, что я не понимаю, как ее использовать в этой ситуации, и пока нет документации или образца кода. Моего подход:
var size = HOST_BASIC_INFO_COUNT
let hostInfo = host_basic_info_t.allocate(capacity: 1)
let temp = hostInfo.withMemoryRebound(to: host_info_t!.self, capacity: Int(size)) {
UnsafeBufferPointer(start: $0, count: Int(size))
}
let result = host_statistics(machHost,
HOST_BASIC_INFO,
temp.baseAddress?.pointee,
&size)
Просто падает с плохим доступом. Каков правильный способ использования withMemoryRebound
?