如何访问 Swift 中结构指针的 properties/member
How to access properties/member of struct pointer in Swift
我正在研究 Mach-O Headers 和 dyld 并发现了这个函数 _dyld_get_image_header
那个 returns 一个指向 mach header 的指针动态库。
我以为我可以通过this article后面的这个指针访问动态库的Mach-O段。但是,我无法访问 Mach-O Headers 的属性并且出现错误。在下面的 Swift 代码中,我试图访问结构的 ncmds 或加载命令 属性,但遇到错误:
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
我正在研究 Mach-O Headers 和 dyld 并发现了这个函数 _dyld_get_image_header
那个 returns 一个指向 mach header 的指针动态库。
我以为我可以通过this article后面的这个指针访问动态库的Mach-O段。但是,我无法访问 Mach-O Headers 的属性并且出现错误。在下面的 Swift 代码中,我试图访问结构的 ncmds 或加载命令 属性,但遇到错误:
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