苹果的每个产品都有几个类型,从iphone到ipod、ipad,而每个产品又有几个类型,从iphone2G到iphone5,从iPod touch1到iPod touch5,从ipad1到ipad4,只有你想不到的,没有人家做不到的。但是在做ios开发中如何检测这些类型呢?下边的方法就是CSDN问答中给出的方法,原问题见:http://ask.csdn.net/questions/997- (NSString *) platformString{
    // Gets a string with the device model
    size_t size;  
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);  
    char *machine = malloc(size);  
    sysctlbyname("hw.machine", machine, &size, NULL, 0);  
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];  
    free(machine); 
    if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 2G";
    if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,2"])    return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,3"])    return @"iPhone 4 (CDMA)";    
    if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";    if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch (1 Gen)";
    if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch (2 Gen)";
    if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch (3 Gen)";
    if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch (4 Gen)";
    if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch (5 Gen)";    if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
    if ([platform isEqualToString:@"iPad1,2"])      return @"iPad 3G";
    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
    if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini";
    if ([platform isEqualToString:@"iPad2,7"])      return @"iPad Mini (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
    if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3";
    if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
    if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4";
    if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (GSM+CDMA)";    if ([platform isEqualToString:@"i386"])         return @"Simulator";
    if ([platform isEqualToString:@"x86_64"])       return @"Simulator";
    return platform;
}
iosipadiphoneobjective-c

解决方案 »

  1.   

    苹果的每个产品都有几个类型,从iphone到ipod、ipad,
      

  2.   

    这个没有什么用呀  主要区分的目的在于屏幕的分辨率
    point一样就没有区分的必要了
      

  3.   

    这么多if看着不舒服,改进一下。- (NSString *) platformString{
        // Gets a string with the device model
        size_t size;  
        sysctlbyname("hw.machine", NULL, &size, NULL, 0);  
        char *machine = malloc(size);  
        sysctlbyname("hw.machine", machine, &size, NULL, 0);  
        NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];  
        free(machine); 
    static NSDictionary* d = nil;
    if (d == nil)
    {
    d = @{
    @"iPhone1,1": @"iPhone 2G",
    @"iPhone1,2": @"iPhone 3G",
    @"iPhone2,1": @"iPhone 3GS",
    @"iPhone3,1": @"iPhone 4",
    @"iPhone3,2": @"iPhone 4",
    @"iPhone3,3": @"iPhone 4 (CDMA)",    
    @"iPhone4,1": @"iPhone 4S",
    @"iPhone5,1": @"iPhone 5",
    @"iPhone5,2": @"iPhone 5 (GSM+CDMA)",
     
    @"iPod1,1": @"iPod Touch (1 Gen)",
    @"iPod2,1": @"iPod Touch (2 Gen)",
    @"iPod3,1": @"iPod Touch (3 Gen)",
    @"iPod4,1": @"iPod Touch (4 Gen)",
    @"iPod5,1": @"iPod Touch (5 Gen)",
     
    @"iPad1,1": @"iPad",
    @"iPad1,2": @"iPad 3G",
    @"iPad2,1": @"iPad 2 (WiFi)",
    @"iPad2,2": @"iPad 2",
    @"iPad2,3": @"iPad 2 (CDMA)",
    @"iPad2,4": @"iPad 2",
    @"iPad2,5": @"iPad Mini (WiFi)",
    @"iPad2,6": @"iPad Mini",
    @"iPad2,7": @"iPad Mini (GSM+CDMA)",
    @"iPad3,1": @"iPad 3 (WiFi)",
    @"iPad3,2": @"iPad 3 (GSM+CDMA)",
    @"iPad3,3": @"iPad 3",
    @"iPad3,4": @"iPad 4 (WiFi)",
    @"iPad3,5": @"iPad 4",
    @"iPad3,6": @"iPad 4 (GSM+CDMA)",
     
    @"i386": @"Simulator",
    @"x86_64": @"Simulator"
    };
    }
        NSString* ret = [d objectForKey: platForm];
    if (ret == nil)
    {
    return platForm;
    }
    return ret;
    }
      

  4.   


    哈哈,有才人,贴到http://ask.csdn.net/questions/997让那个提问的人也看看呗,在这他也看不到
      

  5.   

    #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
    判断是不是iPhone 5 其他设备多判断没意思..
      

  6.   

    有时候需要判断系统版本~,我觉得用UIDevice也不错