给定
public struct MIDIPacketList {
public var numPackets: UInt32
public var packet: (MIDIPacket)
}
如果我有一个 UnsafeMutablePointer,我想访问数据包的一个 UnsafeMutablePointer。仅仅获得原始数据包成员的副本很容易,但不正确:我需要指针本身。 在 C 中,我想实现的很简单
MIDIPacket *packet = &packetList->packet;
我如何在 Swift 中做同样的事情? 请注意,虽然我认为前进 4 个字节(UInt32 的大小)很可能作为 hack 工作,但由于结构对齐问题,这是一个不正确的答案。
最佳答案
这应该有效:
let packetList: UnsafeMutablePointer<MIDIPacketList> = ...
withUnsafeMutablePointer(to: &packetList.pointee.packet) {
packet in // UnsafeMutablePointer<(MIDIPacket)>
// ...
}
在闭包内部,packet
是指向 MIDIPacket
的指针。
关于swift - 如何访问 Swift 中 UnsafePointer 引用的结构的成员字段的 UnsafePointer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667639/