如何在 Swift 中访问结构指针的属性/成员

问题描述

我在处理 Mach-O 标头和 dyld 时遇到了这个函数 _dyld_get_image_header,它返回一个指向动态库的 mach 标头的指针。

我想我也许可以通过 this article 后面的这个指针访问动态库的 Mach-O 段。但是,我无法访问 Mach-O 标头的属性并且出现错误。在下面的 Swift 代码中,我尝试访问结构的 ncmds 或 load 命令属性,但遇到了错误

var currentLibrary = 0
// Gets Pointer to Mach Header of First Dynamic Library,Index 0
let libHeader = unsafeBitCast(_dyld_get_image_header(UInt32(currentLibrary)),to: UnsafePointer<mach_header_64>.self)

print(libHeader.ncmds)

错误

Value of type 'UnsafePointer<mach_header_64>' has no member 'ncmds'

解决方法

它类似于 c,您可以在其中使用 -> 运算符 (libHeader->ncmds),相当于 (*libHeader).ncmds。也就是说,首先引用指针以获取 mach_header_64 值,然后访问其 ncmds 字段。

在 Swift 中,这是完全相同的想法,但语法不同:libHeaver.pointee.ncmds

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...