您好,匿名用户
随意问技术百科期待您的加入

如何判断iOS设备硬件型号

0 投票

如何判断iOS设备型号,比如iPhone5.

现在我的做法是写了个宏:

#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

API中直接有方法可以调用吗?

用户头像 提问 2012年 12月1日 @ Dionysus 上等兵 (229 威望)
分享到:

1个回答

0 投票
 
最佳答案
+ (NSString*)getMachine{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *name = malloc(size);
    sysctlbyname("hw.machine", name, &size, NULL, 0);
    
    NSString *machine = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
    
    free(name);

    if( [machine isEqualToString:@"i386"] || [machine isEqualToString:@"x86_64"] ) machine = @"ios_Simulator";
    else if( [machine isEqualToString:@"iPhone1,1"] ) machine = @"iPhone_1G";
    else if( [machine isEqualToString:@"iPhone1,2"] ) machine = @"iPhone_3G";
    else if( [machine isEqualToString:@"iPhone2,1"] ) machine = @"iPhone_3GS";
    else if( [machine isEqualToString:@"iPhone3,1"] ) machine = @"iPhone_4";
    else if( [machine isEqualToString:@"iPod1,1"] ) machine = @"iPod_Touch_1G";
    else if( [machine isEqualToString:@"iPod2,1"] ) machine = @"iPod_Touch_2G";
    else if( [machine isEqualToString:@"iPod3,1"] ) machine = @"iPod_Touch_3G";
    else if( [machine isEqualToString:@"iPod4,1"] ) machine = @"iPod_Touch_4G";
    else if( [machine isEqualToString:@"iPad1,1"] ) machine = @"iPad_1";
    else if( [machine isEqualToString:@"iPad2,1"] ) machine = @"iPad_2";
    
    return machine;
}

历史上是这样的

用户头像 回复 2012年 12月1日 @ Twitch 上等兵 (260 威望)
选中 2012年 12月1日 @Dionysus
提一个问题:

相关问题

+2 投票
1 回复 59 阅读
用户头像 提问 2013年 1月15日 @ 匿名用户
+1 投票
1 回复 96 阅读
用户头像 提问 2013年 1月14日 @ Urgot 上等兵 (262 威望)
0 投票
1 回复 1,081 阅读
0 投票
1 回复 65 阅读
用户头像 提问 2012年 12月1日 @ Evelynn 上等兵 (244 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...