如何获得iOS设备硬件规格?

时间:2014-07-31 11:49:28

标签: ios objective-c iphone ipad

从代码中获取有关iOS设备CPU,GPU和内存的信息的最佳方法是什么? 我想知道它有多少核心,cpu有多少GHz等等。 感谢。

2 个答案:

答案 0 :(得分:8)

您无法通过代码获取设备CPU,GPU和内存信息。您阅读UIDevice developer reference并使用它获取其他信息:

UIDevice *device  = [UIDevice currentDevice];
NSString *name    = [device name];
NSString *sysname = [device systemName]; 
NSString *model   = [device model];

可能甚至更棘手的规范,然后你参考维基百科iPhone文章来查找每个模型的硬件规格。

答案 1 :(得分:2)

我的评论仍然来自上面,因为你可以在Android上做一些事情,而不是期望能够在iOS上做到这一点。 Apple对于它们允许开发人员做什么的限制非常严格,因为它对Android更加放松。

但是要回答你的问题,我相信你可以通过两种方法中的一种来检测设备的核心数量,请注意,虽然我已经测试过这段代码,但我从未将它提交到Apple App Store,所以我没有&# 39;不知道它是否会通过,你自己承担风险。

获取核心数的方法1使用mach_host.h来计算核心数。

#include <mach/mach_host.h>    

int numberOfCores()
{
   host_basic_info_data_t info;
   mach_msg_type_number_t count; 

   count = HOST_BASIC_INFO_COUNT;
   host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&info, &count);
   return info.max_cpu;
}

获取核心数的方法2使用sysct1.h计算核心数

#include <sys/sysct1.h> 

unsigned int numberOfCores() 
{
   size_t len;
   unsigned int ncpu;
   len = sizeof(ncpu);
   sysctlbyname("hw.ncpu", &ncpu &len, NULL, 0);       

   return ncpu;
}

您还可以将sysctlbyname("hw.ncpu", &ncpu &len, NULL, 0);替换为sysctlbyname("hw.physicalcpu", &ncpu &len, NULL, 0);以获取物理核心。

说实话,我不确定<mach/mach_host.h><sys/sysct1.h>是否是私人图书馆,所以这实际上是自负风险。