gpt4 book ai didi

swift - 苹果系统。如何以编程方式获取 CPU 温度

转载 作者:搜寻专家 更新时间:2023-11-01 05:52:07 30 4
gpt4 key购买 nike

我需要使用 Swift 获取 CPU 温度,但除了 this 之外我找不到任何信息.

我认为我应该使用 IOKit.framework 但同样没有太多关于它的信息。

最佳答案

使用 https://github.com/lavoiesl/osx-cpu-temp/blob/master/smc.c我让它工作了。你必须做几件事:

main() 简化为其他内容:

double calculate()
{
SMCOpen();
double temperature = SMCGetTemperature(SMC_KEY_CPU_TEMP);
SMCClose();
temperature = convertToFahrenheit(temperature);
return temperature;
}

编写一个 ObjC 包装器:

#import "SMCObjC.h"
#import "smc.h"
@implementation SMCObjC

+(double)calculateTemp {
return calculate();
}

@end

将 header 添加到您的 Swift 桥接 header 。

//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "SMCObjC.h"

如果应用是沙盒化的,为 AppleSMC 添加安全豁免:

<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
<key>com.apple.security.temporary-exception.sbpl</key>
<array>
<string>(allow iokit-open)</string>
<string>(allow iokit-set-properties (iokit-property &quot;AppleSMC&quot;))</string>
<string>(allow mach-lookup (global-name &quot;com.apple.AssetCacheLocatorService&quot;))</string>
</array>
</dict>
</plist>

从 Swift 调用它。

import Cocoa

class ViewController: NSViewController {

override func viewDidLoad() {
super.viewDidLoad()
let temp = SMCObjC.calculateTemp()
print("I got \(temp) in swift")
}
}

关于swift - 苹果系统。如何以编程方式获取 CPU 温度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47875104/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com