Я играю с портированием DD C -CI tool на Swift и застрял на
IOI2CConnectRef connect;
kr = IOFBCopyI2CInterfaceForBus(framebuffer, bus, &interface);
if( kIOReturnSuccess != kr)
continue;
kr = IOI2CInterfaceOpen( interface, kNilOptions, &connect );
IOObjectRelease(interface);
assert( kIOReturnSuccess == kr );
if( kIOReturnSuccess != kr)
continue;
У меня сейчас
var interface = io_service_t()
kr = IOFBCopyI2CInterfaceForBus(framebuffer, bus, &interface)
if kr != kIOReturnSuccess {
continue
}
var connection: IOI2CConnectRef?
kr = IOI2CInterfaceOpen(interface, IOOptionBits.zero, &connection)
if kr == kIOReturnSuccess {
// IOI2CInterfaceClose(connection, IOOptionBits.zero)
break
}
Который проверяется типом, но, похоже, не работает, connection
здесь всегда nil
. Я не совсем уверен, как обрабатывать указатель / инициализацию в Swift. Похоже, что это работает в случае var interface = io_service_t()
, но я думаю, что это хитрее, поскольку connection
обнуляется в C, но в Swift это Optional
, который может иметь другую структуру памяти и плохо взаимодействовать.
Все помогает ценится. Спасибо!