所以我看了这个帖子: iPhone - How do I detect the iPhone version?
但它没有回答如何寻找iphone 4。 而且,它看起来像丑陋的代码。也许有一种更简单的方法?
我也在寻找专门用于检测代码中的iphone 4的方法。有任何想法吗? 谢谢!
答案 0 :(得分:11)
我不想在这里讨论是否更好地检测硬件模型或功能;我相信最好的只取决于他们可能拥有的特殊需求。 无论如何,如果你想测试硬件模型,那么你可以使用以下unix系统调用:
#include <sys/utsname.h>
int uname(struct utsname *name);
struct utsname
的一个成员是machine
,一个标识硬件的空终止字符串(有关其他成员的信息,请参阅 man 3 uname );对于iPhone 4,它将是“iPhone3,1”,用于3GS“iPhone2,1”,用于3G“iPhone1,2”,用于iPod Touch第4代“iPod4,1”,第三代“iPod3,1” “和第二代”iPod2,1“。
struct utsname platform;
int rc;
rc = uname(&platform);
if(rc == -1){
/* handle error */
}
else{
fprintf(stdout, "hardware platform: %s", platform.machine);
}
答案 1 :(得分:9)
不检测模型,检测功能。
例如,如果您从提供@ 2x图像和普通尺寸图像的Web服务下载图像,您现在就知道,这只能在iPhone4和iPod Touch 4上运行,但是谁会这么说明天不会在iAmazingMagicThingy上工作?测试能力。
要使用上面的示例,测试方法是:
if([[UIScreen mainScreen] respondsToSelector:@selector(scale)] &&
[[UIScreen mainScreen] scale] == 2.0) {
/* do your thing */
}
我不打算继续讨论如何测试功能,但你真的希望这样做,而不是测试特定的模型。