《iOS 6高级开发手册(第4版)》——1.4节秘诀:取回额外的设备信息
本节书摘来自异步社区《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章的文件夹。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《Android应用开发》——2.3节意图类
本节书摘来自异步社区《Android应用开发》一书中的第2章,第2.3节意图类,作者 【美】Chris Haseman,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.3 意图类Android应用开发一个意图是一个类。在Android平台上,意图构成了主要的通信协议,用来在应用构件之间传输信息。在一个设计良好的Android应用中,构件(活动、内容提供方或服务)永远不该直接访问其他任何构件的实例。同样,意图是这些构件之间的通信方式。 本书原本可以用大半篇幅来介绍意图类的创建、使用和细节。但为了简洁并让一切尽快地运转起来,本章只介绍几个基本概念。可以到本书的其他章节寻找意图的相关内容,它们可能是整个Android平台中最常用的类。 有以下两种主要方法可以告诉Android系统,愿意接收由系统、其他应用甚至用户自己的应用所发出的意图。 在AndroidManifest.xml文件中注册一个。在系统中注册一个IntentFilter运行时对象。这两种情况都需要告诉Android系统你监听什么事件。 同样有一大堆方法可以发出意图。可以把它们广播给系统,或者可以让它们面向一个特别的活动或...
- 下一篇
《iOS组件与框架——iOS SDK高级特性剖析》——第6章,第6.4节以编程方式选择媒体
本节书摘来自异步社区《iOS组件与框架——iOS SDK高级特性剖析》一书中的第6章,第6.4节示以编程方式选择媒体,作者 【美】Kyle Richter , Joe Keeley,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.4 以编程方式选择媒体iOS组件与框架——iOS SDK高级特性剖析经常需要以定制方式让用户选择音乐,这包括创建自定义音乐选择界面或自动搜索艺术家或专辑。本节讨论以编程方式选择音乐所需的步骤。 要在不使用MPMediaPickerController的情况下获取歌曲,需要分配并初始化一个MPMediaQuery实例。MPMediaQuery相当于一个存储器,包含大量指向MPMediaItem的引用,而每个MPMediaItem都表示一个要播放的歌曲或音轨。 示例应用包含两个实现MPMediaQuery的方法。第一个是playRandomSongAction:,它在用户的音乐库中随机选择一个音轨,并使用现成的MPMusicPlayerController播放它。要以编程方式选择音乐,首先需要分配并初始化一个MPMediaQuery实例。 6.4.1 随机...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Red5直播服务器,属于Java语言的直播服务器
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启