[iOS]关于如何在项目中同时适配低版本和高版本的API的一点小见解

本文探讨了在iOS开发中如何处理新旧版本API的兼容问题。以UIActionSheet在iOS7和iOS8中的行为差异为例,介绍了苹果在iOS8中引入的新API UIAlertController。提出了通过检测系统版本的宏来决定使用哪种API的方法,确保代码能在不同版本的iOS设备上正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS系统的版本每年都在不断的更新,而每次的更新必然伴随着,新的API的诞生和旧的API的废弃.

有时,新的版本中,旧的API固然可以实现效果,但是还是会在细节方面有所区别.

我给大家举个例子:

iOS 7中,我们使用 UIActionSheet 由下及上弹出提示框,这个API 在iOS7中固然很好,没有问题,到了iOS8中,他虽然可以可以使用,但是当你在开发中,将手机设置为不可转屏,view是不会旋转,可是这个 UIActionSheet 却可以自行旋转;

这是由于苹果在iOS8中更新了新的API 为 UIAlertAction 和 UIAlertController 的配合使用才不会出现这种情况,而新的API更加的易用,直接在block回调函数中,响应事件.

说了这么多,那么如何在项目中同时适配两种版本呢?让代码既可以在高版本的xcode运行,也可以在旧的xcode运行呢?

首先,需要知道一点是:

系统中有这样的一个宏 

#define __IPHONE_8_0     80000

当你使用xcode 5.1打的版本时,无论是装在 iOS7 还是 iOS8的手机上 该API都不会存在的;

相反使用xcode 6.1打的版本时,无论是装在 iOS7 还是 iOS8的手机上 该API都是存在的;

明白了这一点,可以往下继续看(你也可以自己测试一下).

然后再项目中,我们需要先定义一个检测系统版本的宏

#define CurrentSystemVersion ([[[UIDevice currentDevice] systemVersion] floatValue])

这个宏可以保证,获取到系统正确的系统版本;

下面就可以开始coding了,只需要在写不同API的地方加上下面就可以了

if (CurrentSystemVersion < 8.0) {

//这里写的是低版本的API coding

}else{

#ifdef __IPHONE_8_0
//这里写高版本的新的API
//在高版本xcode运行,此部分的代码有颜色
//在低版本xcode运行,此本分代码为白色,也就是不会执行
#endif

        }

这样就可以适配新旧的API了

当然这只是很小的一部分,借此抛砖引玉,希望大家见谅拙笔.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值