iOS下设备版本获取
执行环境
可以从 UIDevice 的属性 model 得到在现在执行的环境。例子如下:
|
1 2 3 4 5 6 7 8 9 10 |
NSString *modelname = [[UIDevice currentDevice]model]; if ([modelname isEqualToString:@"iPhone"]) { // iPhone } if ([modelname isEqualToString:@"IPod Touch"]) { // iPod touch } if ([modelname isEqualToString:@"iPhone Simulator"]) { // iPhone Simulator } |
或者
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#import <TargetConditionals.h> #if TARGET_OS_IPHONE // iPhone Device #endif #if TARGET_IPHONE_SIMULATOR // iPhone Simulator #endif #if !TARGET_IPHONE_SIMULATOR // iPhone Device #endif |
或:
if ([[UIDevicecurrentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
// iPhone and iPod touch style UI
} else {
// iPad style UI
}
iPhone 机器版本
可以通过 uname 函数取得当前机器的版本。例子如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
struct utsname u; uname(&u); 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 } |
或者通过 sysctlbyname() 函数取得:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
- (NSString *) platform { size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); /* Possible values: "iPhone1,1" = iPhone 1G "iPhone1,2" = iPhone 3G "iPhone2,1" = iPhone 3GS "iPod1,1" = iPod touch 1G "iPod2,1" = iPod touch 2G */ NSString *platform = [NSString stringWithCString:machine]; free(machine); return platform; } |
iPhone OS 版本
可以使用 UIDevice 的属性 systemVersion 来得到。例子如下:
|
1 2 3 4 5 6 7 8 9 10 |
NSString *osversion = [UIDevice currentDevice].systemVersion; if ([osversion isEqualToString:@"2.1"]) { // iPhone } if ([osversion isEqualToString:@"2.2.1"]) { // iPod touch } if ([osversion isEqualToString:@"3.0"]) { // iPhone Simulator } |
这里有一个别人写好的类库,专门用来得到系统版本信息,用起来比较方便。
iPhone SDK 版本宏
就像在windows系统下用 WINVER 宏来判断 windows 系统版本一样,iPhone OS 中也有类似的宏。
|
1 2 3 4 |
// 当前系统支持的最小版本 __IPHONE_OS_VERSION_MIN_REQUIRED // 当前系统支持的最大版本 __IPHONE_OS_VERSION_MAX_ALLOWED |
比如用 iPhone OS SDK 3.1.2 编译的程序
|
1 2 |
__IPHONE_OS_VERSION_MIN_REQUIRED == __IPHONE_3_0 __IPHONE_OS_VERSION_MAX_ALLOWED == __IPHONE_3_1 |
这时,我们可以在程序中使用下面类似的 $ifdef 语句:
|
1 2 3 4 5 |
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_2_2 // iPhone OS SDK 3.0 以后版本的处理 #else // iPhone OS SDK 3.0 之前版本的处理 #endif |
又或者 iPhone OS SDK 4 推出的时候,可以:
|
1 2 3 4 5 6 7 8 9 |
#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_2_2 #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_3_1 // iPhone OS SDK 4.0 以后版本的处理 #else // iPhone OS SDK 3.0 ~ 4.0 版本的处理 #endif #else // iPhone OS SDK 3.0 之前版本的处理 #endif |
感谢:http://www.yifeiyang.net/iphone-development-techniques-of-environmental-chapter-7-distinguish-between-different-versions-of-the-iphone/
iOS下设备版本获取的更多相关文章
- 史上最全的iOS各种设备信息获取总结
来源:si1ence 链接:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息 ...
- iOS: iOS各种设备信息获取
Author:si1ence Link:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述 ...
- ios下通过webservice获取数据
经历了两天的摸索,终于成功获取了数据,因为公司要做一个停车入库的信息查询,所以需要访问webservice的接口,由于没有接触过webservice,所以第一天就是各种搜索资料,类库,各种尝试,甚至是 ...
- 识别ios系统设备并获取版本号
let isIOS = userAgent.toLowerCase().indexOf("like mac os x") > 0; //ios终端 if (isIOS) { ...
- iOS 获取设备版本型号
#import "sys/utsname.h" /** * 设备版本 * * @return e.g. iPhone 5S */+ (NSString*)deviceVersi ...
- iOS开发-Swift获取手机设备信息(UIDevice)
使用UiDevice获取设备信息 获取设备名称 let name = UIDevice.currentDevice().name 获取设备系统名称 let systemName = UIDevice. ...
- Cordova webapp实战开发:(6)如何写一个iOS下获取APP版本号的插件?
上一篇我们学习了如何写一个Andorid下自动更新的插件,我想还有一部分看本系列blog的开发人员希望学习在iOS下如何做插件的吧,那么今天你就可以来看看这篇文字了. 本次练习你能学到的 学习如何获取 ...
- iOS开发-Object-C获取手机设备信息(UIDevice)
一.获取UiDevice设备信息 // 获取设备名称 NSString *name = [[UIDevice currentDevice] name]; // 获取设备系统名称 NSString *s ...
- ios下点击穿透focus获取问题
在ios下的浏览器中当点击当前页的一个按钮,用window.location.href进行跳转时,如果下一个页面里这点击按钮的位置是一个textarea或者text等那么他会触发focus事件,会出现 ...
随机推荐
- wannafly 挑战赛9 E 组一组 (差分约束)
链接:https://www.nowcoder.com/acm/contest/71/E 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 65536K,其他语言131072K Spec ...
- mysql 时间差
SELECT TIMESTAMPDIFF(minute,'2019-01-01 00:00:00', '2019-01-01 01:30:00') 返回结果 90 类推,有 SELECT TIMEST ...
- 修改docker下mysql配置
1.在/home/smile/docker/mysql/config/目录下增加一个文件 my.cnf # Copyright (c) , Oracle and/or its affiliates. ...
- js运行原理
https://www.youtube.com/watch?v=8aGhZQkoFbQ
- CNN中感受野的理解
本文摘自看完还不懂卷积神经网络“感受野”?那你来找我 作者:程序_小白链接:https://www.jianshu.com/p/9305d31962d8 一.到底什么是“感受野”(接受野Recepti ...
- linux命令--truncate 学习
truncate命令可以将一个文件缩小或者扩展到某个给定的大小 可以利用该命令和-s选项来特别指定文件的大小 1.清空一个文件内容,尤其是log 2. truncate -s 0 test
- Spring 由缓存切点驱动的通知者
Spring 缓存通知者和切点 缓存切点 /** * Spring 核心切点抽象 */ public interface Pointcut { /** * 类过滤器,当前切点是否需要织入在指定的类上 ...
- 浅谈call apply bind的区别
这三个方法的用法非常相似,将函数绑定到上下文中,即用来改变函数中this的指向.举个例子: var zlw = { name: "zlw", sayHello: function ...
- css让字体细长
transform: scale(1,3); -ms-transform: scale(1,3); -webkit-transform: scale(1,3); -moz-transform: sca ...
- 2018.03.29 python-matplotlib 图表生成
'''Matplotlib -> 一个python版的matlab绘图接口,以2D为主,支持python,numpy,pandas基本数据结构,高效图标库''' import numpy as ...