给出
public struct MIDIPacketList {
public var numPackets: UInt32
public var packet: (MIDIPacket)
}
我想访问一个UnsafeMutablePointer包,因为我有一个UnsafeMutablePointer。仅仅获取原始数据包成员的副本很简单,但不正确:我需要指针本身。 在C中,我想要实现的就像
一样简单MIDIPacket *packet = &packetList->packet;
我如何在Swift中做同样的事情? 请注意,虽然我认为前进4个字节(UInt32的大小)很可能是一个黑客,但由于结构对齐问题,这是一个错误的答案。
答案 0 :(得分:2)
这应该有效:
let packetList: UnsafeMutablePointer<MIDIPacketList> = ...
withUnsafeMutablePointer(to: &packetList.pointee.packet) {
packet in // UnsafeMutablePointer<(MIDIPacket)>
// ...
}
在闭包内,packet
是指向MIDIPacket
的指针。