【发布时间】:2014-12-21 03:58:56
【问题描述】:
var cpuInfo: processor_info_array_t = nil
var numCpuInfo: mach_msg_type_number_t = 0
var coresTotalUsage: Float = 0.0
var numCPUsU: natural_t = 0
let err = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &numCPUsU, &cpuInfo, &numCpuInfo);
assert(err == KERN_SUCCESS, "Failed call to host_processor_info")
您好,我正在调用上述 C API host_processor_info 以从 swift 获取进程加载信息,那里没有问题。
cpuInfo 是一个 inout 参数(指针),返回时将指向一个包含由该 API 分配的 CPU 信息的结构。
调用者负责释放内存;我可以从目标 C 轻松做到这一点,但在 swift 中没有任何运气。我知道我可以将该调用包装到一个客观的 C 扩展中,但我正在努力学习 swift 并且希望,如果可能的话,避免使用 obj-c 解决方案。
在 obj-c 中,我会使用:
size_t cpuInfoSize = sizeof(integer_t) * numCpuInfo;
vm_deallocate(mach_task_self(), (vm_address_t) cpuInfo, cpuInfoSize)
swift 中的 cpuInfo 是 UnsafeMutablePointer 不能转换为 vm_address_t。
任何帮助表示赞赏,谢谢。
【问题讨论】:
标签: ios macos swift interop xcode6