如何获取CPU模型,CPU使用率,CPU空闲,RAM详细信息,存储详细信息等硬件信息?我使用Xcode 7.1.1和Swift 2.我想要没有make app。我尝试了UIDevice
,NSProcessInfo
。我看到了几个帖子,但我找不到任何解决方法。
答案 0 :(得分:6)
大部分内容都可以通过一些较低级别的C API来揭示。这可能是您编写基于它们的简单Swift扩展的好机会,但您可以直接在Swift中编写C代码以获得您的答案。
我很乐意接受信任,但我会链接到其他人提供的一些答案:
答案 1 :(得分:3)
Heres HAS'我为了从UIDevice获得处理器和速度而修改的扩展。可能不是最好的方式(所有的值都是硬编码的)但是它有效!
import Foundation
import NotificationCenter
public extension UIDevice
{
//Original Author: HAS
// https://stackoverflow.com/questions/26028918/how-to-determine-the-current-iphone-device-model
// Modified by Sam Trent
/**********************************************
* getCPUName():
* Returns a hardcoded value of the current
* devices CPU name.
***********************************************/
public func getCPUName() -> String
{
var processorNames = Array(CPUinfo().keys)
return processorNames[0]
}
/**********************************************
* getCPUSpeed():
* Returns a hardcoded value of the current
* devices CPU speed as specified by Apple.
***********************************************/
public func getCPUSpeed() -> String
{
var processorSpeed = Array(CPUinfo().values)
return processorSpeed[0]
}
/**********************************************
* CPUinfo:
* Returns a dictionary of the name of the
* current devices processor and speed.
***********************************************/
private func CPUinfo() -> Dictionary<String, String> {
#if (arch(i386) || arch(x86_64)) && os(iOS)
let identifier = ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"]!
#else
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8 , value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
#endif
switch identifier {
case "iPod5,1": return ["A5":"800 MHz"] // underclocked
case "iPod7,1": return ["A8":"1.4 GHz"]
case "iPhone3,1", "iPhone3,2", "iPhone3,3": return ["A4":"800 MHz"] // underclocked
case "iPhone4,1": return ["A5":"800 MHz"] // underclocked
case "iPhone5,1", "iPhone5,2": return ["A6":"1.3 GHz"]
case "iPhone5,3", "iPhone5,4": return ["A6":"1.3 GHz"]
case "iPhone6,1", "iPhone6,2": return ["A7":"1.3 GHz"]
case "iPhone7,2": return ["A8":"1.4 GHz"]
case "iPhone7,1": return ["A8":"1.4 GHz"]
case "iPhone8,1": return ["A9":"1.85 GHz"]
case "iPhone8,2": return ["A9":"1.85 GHz"]
case "iPhone9,1", "iPhone9,3": return ["A10 Fusion":"2.34 GHz"]
case "iPhone9,2", "iPhone9,4": return ["A10 Fusion":"2.34 GHz"]
case "iPhone8,4": return ["A9":"1.85 GHz"]
case "iPhone10,1", "iPhone10,4": return ["A11 Bionic":"2.39 GHz"]
case "iPhone10,2", "iPhone10,5": return ["A11 Bionic":"2.39 GHz"]
case "iPhone10,3", "iPhone10,6": return ["A11 Bionic":"2.39 GHz"]
case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return ["A5":"1.0 GHz"]
case "iPad3,1", "iPad3,2", "iPad3,3": return ["A5X":"1.0 GHz"]
case "iPad3,4", "iPad3,5", "iPad3,6": return ["A6X":"1.4 GHz"]
case "iPad4,1", "iPad4,2", "iPad4,3": return ["A7":"1.4 GHz"]
case "iPad5,3", "iPad5,4": return ["A8X":"1.5 GHz"]
case "iPad6,11", "iPad6,12": return ["A9":"1.85 GHz"]
case "iPad2,5", "iPad2,6", "iPad2,7": return ["A5":"1.0 GHz"]
case "iPad4,4", "iPad4,5", "iPad4,6": return ["A7":"1.3 GHz"]
case "iPad4,7", "iPad4,8", "iPad4,9": return ["A7":"1.3 GHz"]
case "iPad5,1", "iPad5,2": return ["A8":"1.5 GHz"]
case "iPad6,3", "iPad6,4": return ["A9X":"2.16 GHz"] // underclocked
case "iPad6,7", "iPad6,8": return ["A9X":"2.24 GHz"]
case "iPad7,1", "iPad7,2": return ["A10X Fusion":"2.34 GHz"]
case "iPad7,3", "iPad7,4": return ["A10X Fusion":"2.34 GHz"]
case "AppleTV5,3": return ["A8":"1.4 GHz"]
case "AppleTV6,2": return ["A10X Fusion":"2.34 GHz"]
case "AudioAccessory1,1": return ["A8":"1.4 GHz"] // clock speed is a guess
default: return ["N/A":"N/A"]
}
}
}
你可以像这样使用它:
print(UIDevice.current.getCPUName())
print(UIDevice.current.getCPUSpeed())
答案 2 :(得分:0)
这是来自Apple的更新的CPU信息的列表。即使经过硬编码,它也可以在2021年秋天之前正常工作:)
ENV