您现在的位置是:首页 > 文章详情

《iOS 6高级开发手册(第4版)》——1.4节秘诀:取回额外的设备信息

日期:2017-05-01点击:372

本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第1章,第1.4节秘诀:取回额外的设备信息,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 秘诀:取回额外的设备信息
iOS 6高级开发手册(第4版)
sysctl()和sysctlbyname()允许获取系统信息。这些标准的UNIX函数用于询问操作系统有关硬件和OS的详细信息。看一眼Macintosh上的/usr/include/sys/sysctl.h包括文件,就能对所提供的范围类型有一个感觉。在那里,能够找到一份可以用作这些函数的参数常量的详尽列表。

这些常量使你能够检查核心信息,比如系统的CPU频率、可用的内存量等。秘诀1-2演示了这种功能。它引入了一个UIDevice类,用于收集系统信息,并通过一系列方法调用返回它。

你可能想知道:当标准的UIDevice类可以根据需要返回设备型号时,为什么这个类还要包括一个平台方法。答案在于区分不同的单元类型。

iPhone 3GS的型号只是“iPhone”,iPhone 4S也是一样。与之相反,这个秘诀为3GS返回的平台值是“iPhone2,1”,为iPhone 4S返回的是“iPhone 4,1”。这允许以编程方式把3GS单元与第一代iPhone(“iPhone1,1”)或iPhone 3G(“iPhone1,2”)区分开。

每种型号都提供了独特的内置能力。准确知道你正在处理哪款iPhone有助于确定那个单元是否有可能支持诸如可访问性、GPS和磁力计之类的特性。

秘诀1-2 扩展设备信息收集

@implementation UIDevice (Hardware) + (NSString *) getSysInfoByName:(char *)typeSpecifier { // Recover sysctl information by name size_t size; sysctlbyname(typeSpecifier, NULL, &size, NULL, 0); char *answer = malloc(size); sysctlbyname(typeSpecifier, answer, &size, NULL, 0); NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding]; free(answer); return results; } - (NSString *) platform { return [UIDevice getSysInfoByName:"hw.machine"]; } - (NSUInteger) getSysInfo: (uint) typeSpecifier { size_t size = sizeof(int); int results; int mib[2] = {CTL_HW, typeSpecifier}; sysctl(mib, 2, &results, &size, NULL, 0); return (NSUInteger) results; } - (NSUInteger) cpuFrequency { return [UIDevice getSysInfo:HW_CPU_FREQ]; } - (NSUInteger) busFrequency { return [UIDevice getSysInfo:HW_BUS_FREQ]; } - (NSUInteger) totalMemory { return [UIDevice getSysInfo:HW_PHYSMEM]; } - (NSUInteger) userMemory { return [UIDevice getSysInfo:HW_USERMEM]; } - (NSUInteger) maxSocketBufferSize { return [UIDevice getSysInfo:KIPC_MAXSOCKBUF]; } @end 获取这个秘诀的代码

{要查找这个秘诀的完整示例项目,可以浏览https://github.com/erica/iOS-6-Advanced-Cookbook,并进入第1章的文件夹。

原文链接:https://yq.aliyun.com/articles/97325
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章