swift - 如何在 Swift 中访问结构指针的属性/成员
问题描述
我在搞乱 Mach-O Headers 和 dyld 并遇到了这个函数_dyld_get_image_header
,它返回一个指向动态库的 mach 头的指针。
我想我也许可以通过这篇文章之后的这个指针来访问动态库的 Mach-O 段。但是,我无法访问 Mach-O Headers 的属性并且收到错误消息。在下面的 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
推荐阅读
- javascript - 如何为不同的按钮重用 JavaScript 函数?
- c# - 代码覆盖率未获取测试(c# .net 标准)
- asp.net - 将评论放在 RDLC 表中的平均分数之上
- .htaccess - . htaccess - 在隐藏 URL 部分时使用 HTTPS 重定向到子文件夹
- css - 适合空白空间的儿童高度
- django - Django Migrations [ AttributeError: 'Startup' 对象没有属性 'tags']
- angular - 使用 Angular 6 的补丁表单不能很好地工作
- visual-studio-code - VSCode 退出超级用户模式
- pandas - DF 上的滚动协方差
- javascript - 加载页面后避免下载