繁体   English   中英

如何在Swift中访问UnsafePointer引用的结构的成员字段的UnsafePointer?

[英]How do I access UnsafePointer of member field of a struct referenced by an UnsafePointer in Swift?

特定

public struct MIDIPacketList {
    public var numPackets: UInt32
    public var packet: (MIDIPacket)
}

鉴于我有一个UnsafeMutablePointer,我想访问一个数据包的UnsafeMutablePointer。 仅获取原始数据包成员的副本很容易,但不正确:我需要指针本身。 在C语言中,我想要实现的过程很简单

MIDIPacket *packet = &packetList->packet;

如何在Swift中做同样的事情? 请注意,尽管我认为前进4个字节(UInt32的大小)确实很可能会引起黑客攻击,但是由于结构对齐问题,这是不正确的答案。

这应该工作:

let packetList: UnsafeMutablePointer<MIDIPacketList> = ...

withUnsafeMutablePointer(to: &packetList.pointee.packet) {
    packet in // UnsafeMutablePointer<(MIDIPacket)>
    // ...
}

在闭packet内部, packet是指向MIDIPacket的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM