在运行时检测不同的硬件对于分析很有用(以及其他更值得怀疑的目的)。
许多 iOS 应用程序创建者可能有兴趣了解有多少用户在 iPad mini 上体验他们的应用程序(而不仅仅是知道有多少用户在屏幕分辨率为 1024x768 的 iPad 上体验他们的应用程序 - 这也很有趣)。
有没有公共APICocoa touch/UIKit/ObjC/C
它可以用来检测您的 iOS 应用程序是否在运行时在 iPad mini 上运行?理想情况下,此方法应区分 iPad 2 和 iPad mini(它们具有相同的像素数,但像素密度不同)。
后记:我意识到很多人会认为在运行时检测 iPad mini 是一个坏主意。然而,我认为这是一个有效的问题,有明确的“是”或“否”答案。我认为这个答案对于社区来说是有用的。
如果 Boxel 的答案不调用未定义的行为并且没有多余的部分,那么它会很好。一,+ [NSString stringWithCString:encoding:]
需要一个 C 字符串 - 即一个以 NUL 结尾的字符指针(否则它很可能会转储核心)。另外,您不需要转换为NSString
- 自从sysctlbyname()
为您提供了一个普通的旧C字符串(当然没有NUL终止符),您可以直接使用strcmp()
节省几十个 CPU 周期:
#include <sys/sysctl.h>
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size + 1);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
machine[size] = 0;
if (strcmp(machine, "iPad2,5") == 0) {
/* iPad mini */
}
free(machine);
编辑:现在答案也已修复。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)