You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS中“deprecated”的含义是什么?废弃方法是否会引发异常或致命问题?

嘿,这个问题问到点子上了,很多iOS开发者刚碰到deprecated标记的时候都会有这些困惑,我来给你讲明白~

一、iOS开发中“deprecated”的真实含义

简单来说,苹果给某个API标上deprecated,意思就是:这个接口我们已经不推荐使用了,并且会在未来的某个iOS版本里彻底移除它

这不是苹果突然搞事情,而是一种「提前预警」——要么是这个API的设计已经过时,有更高效、更安全的新API替代;要么是系统底层架构调整,旧接口已经不符合新的设计规范了。苹果给你留了足够的过渡期,让你有时间把代码从旧接口迁移到新接口,避免未来系统更新后App直接出问题。

二、Deprecated方法能不能正常使用?会不会引发致命问题?

这个得分情况说,不能一概而论:

  • 短期内基本能正常工作
    苹果不会刚标deprecated就把接口废掉,一般会给3-4个大版本的缓冲期。比如某个iOS 15标记为废弃的方法,大概率到iOS 18才会彻底移除。在移除之前,调用它基本能完成原本的功能,不会平白无故崩溃或者失效。

  • 但存在潜在的风险
    虽然现在能用,但这些废弃的接口苹果已经停止维护了——也就是说,新系统里如果发现这些接口有bug,苹果不会再修复;而且在适配新特性(比如新硬件、新系统权限)的时候,这些旧接口可能会出现异常,比如返回错误数据、触发莫名其妙的警告,极端情况下确实可能导致崩溃,但这种「致命问题」大多出现在边缘场景,不是普遍情况。

  • 长远来看会给你挖坑
    如果你一直依赖废弃接口,等到苹果彻底移除它的那天,你的App在新系统上就会直接报错,到时候再大规模修改代码会非常被动;而且App Store审核也可能会因为你使用过多过时API而给你提警告,影响上架或者更新。

举个实际的例子:以前的UIWebView在iOS 12就被标记为deprecated,iOS 14彻底移除。在iOS 12-13期间用它还能正常加载网页,但iOS 14之后调用就会直接崩溃,而且审核也不让过,当时很多开发者都赶在截止前紧急迁移到WKWebView

总的来说,废弃接口不是不能用,但能不用就别用,尽快迁移到苹果推荐的替代方案才是稳妥的做法。

内容的提问来源于stack exchange,提问作者Bigair

火山引擎 最新活动