在 C 中创建时基信息结构很容易,但在 Swift 中,以下内容在 Playground 中不起作用:
let timebaseInfo: mach_timebase_info_data_t = mach_timebase_info(&timebaseInfo)
错误是Variable used within its own initial value
我理解这个错误,但我无法想出一种方法来做到这一点而不下降到 C。是否有我缺少的 Swift 唯一方法?任何帮助将不胜感激。 :-)
编辑:实际上我看到上面的“A”问题,“=”没有意义。但我也尝试了以下方法:
let timebaseInfo: mach_timebase_info_data_t
mach_timebase_info(&timebaseInfo)'
出现错误,指出初始化之前使用了 timebasedInfo。 :-(
The mach_timebase_info
函数声明为
typealias mach_timebase_info_t = UnsafeMutablePointer<mach_timebase_info>
// ...
func mach_timebase_info(info: mach_timebase_info_t) -> kern_return_t
这意味着你可以传递一个(初始化的)mach_timebase_info
多变的
作为“输入输出表达式”&
:
var timebaseInfo = mach_timebase_info(numer: 0, denom: 0)
let status = mach_timebase_info(&timebaseInfo)
if status == KERN_SUCCESS {
// ...
}
有关更多信息,请参阅与 C API 交互 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html在“将 Swift 与 Cocoa 和 Objective-C 一起使用”手册中:
可变指针
当函数被声明为采用UnsafeMutablePointer<Type>
参数,它可以接受以下任何一个:
-
nil
,它作为空指针传递
- An
UnsafeMutablePointer<Type>
value
- 一个输入输出表达式,其操作数是类型的存储左值
Type
,
作为左值的地址传递
- 一进一出
[Type]
值,作为指向开始的指针传递
数组,并在调用期间延长生命周期
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)