ios开发中各种版本、设备的区分

设备类型的区分-iphone ,ipad-itouch.....
可以从 UIDevice 的属性 model 得到在现在执行的环境。例子如下:
 
[cpp] view plaincopyprint?

NSString *modelname = [[UIDevice currentDevice]model];  
if ([modelname isEqualToString:@"iPhone"]) {  
  // iPhone  
}  
if ([modelname isEqualToString:@"IPod Touch"]) {  
  // iPod touch  
}  
if ([modelname isEqualToString:@"iPhone Simulator"]) {  
  // iPhone Simulator  
}  

也可以通过宏定义区分
 
 
[cpp] view plaincopyprint?

#if TARGET_OS_IPHONE  
    // iPhone Device  
#endif  
  
#if TARGET_IPHONE_SIMULATOR  
    // iPhone Simulator  
#endif  
  
#if !TARGET_IPHONE_SIMULATOR  
    // iPhone Device  
#endif  
ios设备版本的区分-iphone3gs,iphone4....
ios提供了几种c函数来获得相应信息如下
[cpp] view plaincopyprint?

struct utsname u;  
uname(&u); ///-----get device struct info  
NSString *machine = [NSString stringWithCString:u.machine];  
  
  
if ([machine isEqualToString:@"iPhone1,1"]) {  
  // iPhone 1G  
}  
if ([machine isEqualToString:@"iPhone1,2"]) {  
  // iPhone 3G  
}  
if ([machine isEqualToString:@"iPhone2,1"]) {  
  // iPhone 3GS  
}  
if ([machine isEqualToString:@"iPod1,1"]) {  
  // iPod touch 1G  
}  
if ([machine isEqualToString:@"iPod2,1"]) {  
  // iPod touch 2G  
}  
if ([machine isEqualToString:@"iPod3,1"]) {  
  // iPod touch Late2009  
}  

或者
[cpp] view plaincopyprint?

- (NSString *) platform  
{  
  size_t size;  
  sysctlbyname("hw.machine", NULL, &size, NULL, 0);  
  char *machine = malloc(size);  
  sysctlbyname("hw.machine", machine, &size, NULL, 0);///-----get device struct info  
  
    
  NSString *platform = [NSString stringWithCString:machine];  
  
  free(machine);  
  return platform;  
}  

 

posted on 2013-07-24 10:53  jack_yan  阅读(465)  评论(0)    收藏  举报