IOS判断版本之编译期和运行时

本文介绍了iOS应用开发中如何在编译期和运行时判断版本,以适应不同iOS版本的需求。编译期判断适用于如枚举类型的版本差异,而运行时判断则用于处理新API在旧系统中的兼容问题。正确使用这两种方式可以避免在低版本iOS上运行时出现错误或崩溃。
摘要由CSDN通过智能技术生成

最近的一些小感悟,每次开发的时候都会不记得什么时候用编译期ios版本区分,什么时候用运行时ios版本区分。决定写下来下次就记得了!

编译期IOS版本判断

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000
      //xcode baseSDK为6.0或者以上
#else
      //xcode baseSDK为6.0以下的
#endif

 

编译期的版本判断是指在编译代码是XCode的sdk环境,这里就是指baseSDK的版本(xcode 5 是 IOS 7.0),有一些在编译的时候就可以区分的就用这个办法区分版本,比如文字对齐的枚举NSTextAligment(IOS6以后)和UITextAligment(IOS6以前) 这种枚举类型 在编译期的时候编译期就会替换,可以在代码里用上面这种办法保证你的代码高版的的xcode下不出warning,同时在低版本的xcode下也能编译。

运行时IOS版本判断:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) {
	//设备系统为IOS 5.0或者以上的
}else{
	//设备系统为IOS 5.0以下的
}


运行时判断版本用最普遍的就是应用需要适配低版本的IOS系统。比如一个新API在IOS6以后才出现,这种时候就要使用运行时的判断方法。当运行在IOS6系统的时候,调用新API。运行在IOS6以下系统的时候,调用低版本替代的函数(可能是自己实现,可能是不处理)

 

如果app的代码用了IOS6.0后出现的新API,代码中区分版本的时候用了编译期区分版本的方法。在有IOS 6.0 sdk的xcode环境下能编译通过,但是当app运行在IOS6.0以下的系统,并且调用到这个新API的时候会崩溃。因为IOS6.0以下的系统没有这个API的声明和实现。 这种情况就应该用运行时判断版本的办法。

以上都是个人理解,有不对的欢迎纠正~嘿

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值