zoukankan      html  css  js  c++  java
  • 判断ios设备型号

    判断代码如下:

    - (NSString *)getMachine
    {
    size_t size;

    // 隐式声明的函数sysctlbyname 在c99中是无效的
    int nR;
    // = sysctlbyname("hw.machine", NULL, &size, NULL,
    // 0);
    char *machine = (char *)malloc(size);

    nR = sysctlbyname("hw.machine", machine, &size, NULL, 0);

    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];

    free(machine);

    if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G (A1203)";
    if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G (A1241/A1324)";
    if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS (A1303/A1325)";
    if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (A1332)";
    if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (A1332)";
    if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (A1349)";
    if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S (A1387/A1431)";
    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (A1428)";
    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (A1429/A1442)";
    if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (A1456/A1532)";
    if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (A1507/A1516/A1526/A1529)";
    if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (A1453/A1533)";
    if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (A1457/A1518/A1528/A1530)";
    if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus (A1522/A1524)";
    if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 (A1549/A1586)";

    if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G (A1213)";
    if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G (A1288)";
    if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G (A1318)";
    if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G (A1367)";
    if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G (A1421/A1509)";

    if ([platform isEqualToString:@"iPad1,1"]) return @"iPad 1G (A1219/A1337)";

    if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (A1395)";
    if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (A1396)";
    if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (A1397)";
    if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (A1395+New Chip)";
    if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini 1G (A1432)";
    if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini 1G (A1454)";
    if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini 1G (A1455)";

    if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (A1416)";
    if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (A1403)";
    if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3 (A1430)";
    if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (A1458)";
    if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (A1459)";
    if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (A1460)";

    if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (A1474)";
    if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (A1475)";
    if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air (A1476)";
    if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G (A1489)";
    if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G (A1490)";
    if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G (A1491)";

    if ([platform isEqualToString:@"i386"]) return @"iPhone Simulator";
    if ([platform isEqualToString:@"x86_64"]) return @"iPhone Simulator";
    return platform;
    }

    其中 nR = sysctlbyname("hw.machine", machine, &size, NULL, 0);这个函数在c99中是无效的,判断当前编译器是否C99标准,执行如下操作:

    #include<stdio.h>
    int main()
    {
    #if (!defined(__STDC__))
    printf("非标准C!");
    #elif defined(__STDC_VERSION__)
    printf("标准C版本:%ld。", __STDC_VERSION__);
    #else
    printf("旧的标准C。");
    #endif
    getchar();
    return 0;
    }
    预定义宏__STDC__表示标准C。__STDC_VERSION__表示标准C版本。C99对应的是199901L。
    (注意有些编译器默认没有定义__STDC_VERSION__,甚至没定义__STDC__。所以查编译器手册更保险一点。ios支持C99)

    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    NSLog(@"%@",deviceString);

    这个函数也可以达到效果,




  • 相关阅读:
    Map使用总结
    AutoReleasePool使用总结
    UIImage使用总结
    Subversion简明手册--使用hook svn
    转:MyEclipse8.6插件安装方法
    转:myeclipse 8.x 插件安装方法终极总结
    如何通过类找到对应的jar包
    关于更改MYECLIPSE JS 代码背景颜色
    win7 64位系统下 PL/SQL无法连接的问题
    Windows7(x64)下Oracle10g安装
  • 原文地址:https://www.cnblogs.com/blogfantasy/p/4916656.html
Copyright © 2011-2022 走看看