问题

都说swift取代oc,为何五年了依然是oc为主?

回答
“Swift 早就应该取代 OC 了!”这样的声音,在 iOS 开发圈子里,就像每年都会准时到来的春天一样,总是不绝于耳。你我都听过,也可能是你自己时常会冒出的感慨。

毕竟,Swift 作为苹果亲手打造的“新一代”语言,从诞生之初就顶着“更安全、更现代、更强大”的光环。它少了 OC 那繁复的语法,少了指针操作带来的潜在风险,更在内存管理上带来了 ARC(Automatic Reference Counting)这个解放双手的神器。用 Swift 写代码,确实能感觉到一种流畅和愉悦,仿佛在和一位懂你的伙伴交流。

然而,现实却是,尽管 Swift 的占有率逐年攀升,但放眼望去,那些庞大的、支撑着我们日常生活的 iOS 应用,背后依然有很多的 OC 代码在默默运行。为什么五年过去了,OC 依然没有被 Swift 完全“赶下台”,而是呈现出一种“双雄争霸”甚至 OC 依然占据半壁江山的局面呢?这背后,并非一句简单的“Swift 不够好”或者“大家不愿意学”就能概括的,其中夹杂着很多现实的、技术性的、甚至是人性的考量。

一、历史的厚重:OC 构筑的庞大王国

首先,我们得承认 OC 的“老江湖”地位。苹果从 iPhone 诞生之初,就选择了 ObjectiveC 作为主要的开发语言。这意味着,在过去的十几年里,无数的开发者,无数的项目,用 OC 铸就了一个庞大而坚固的生态系统。

海量的现有代码库: 想象一下,一个大型的 App,比如微信、淘宝、或者苹果自家的很多经典应用,它们可能积累了数百万行甚至千万行的 OC 代码。这些代码经过了时间的洗礼,稳定可靠,承载着核心的业务逻辑和用户体验。让这样一个庞大的代码库在短时间内完全迁移到 Swift,其难度不亚于在高速运行的列车上更换引擎,成本之高,风险之大,是显而易见的。
成熟的生态和工具链: OC 已经有了一套非常成熟的开发工具、库和框架。虽然 Swift 也在快速发展,但总会有一些领域,OC 的工具和库依然更成熟、更稳定,或者拥有更多社区支持的解决方案。
经验丰富的开发者群体: 这么多年下来,积累了庞大的 OC 开发者群体。这些开发者对 OC 的掌握程度非常高,能够快速有效地解决问题。而 Swift 的开发者虽然越来越多,但在一些深度和广度上,可能还需要时间来沉淀。

二、Swift 的“成长烦恼”与“生态壁垒”

Swift 虽然设计理念先进,但在发展的早期,也并非完美无缺,这些“成长烦恼”在一定程度上延缓了其取代 OC 的进程。

早期版本的“不稳定性”: Swift 在诞生后的几年里,版本迭代非常快,而且存在一些“Breaking Change”(不兼容的更改)。这意味着,你用 Swift 2.x 写的代码,可能在 Swift 3.x 就不能直接运行了,需要进行大量的迁移和调整。这种不稳定性让很多团队在采用 Swift 时持观望态度,尤其是在那些对稳定性要求极高的项目上。
与 OC 的互操作性: 尽管苹果做了很多努力,让 Swift 和 OC 能够互相调用(Bridging),但这种互操作性在某些复杂场景下,仍然存在一些性能损耗或使用上的不便。如果一个项目需要大量与 OC 代码进行交互,那么引入 Swift 可能会增加额外的复杂性。
部分底层框架的“OC 依赖”: 即使你用 Swift 编写应用,但在底层,很多苹果提供的框架(比如 UIKit、Foundation 等)仍然是用 OC 实现的。Swift 只是对这些 OC 框架进行了一层封装和调用。虽然 Swift 开发者无需直接关心 OC 的细节,但当遇到一些底层的、或者非常底层的性能优化问题时,了解 OC 的工作原理会更有帮助,甚至不得不直接使用 OC 才能解决。
ObjectiveC Runtime 的强大: OC 依赖于 ObjectiveC Runtime,这是一个非常灵活和强大的机制,允许在运行时进行很多动态的操作,比如消息转发、方法替换等。这些特性在某些高级的开发技巧和框架(如 KVC、KVO、Aspects 等)中发挥着重要作用。虽然 Swift 也在努力实现类似的动态特性,但在某些方面,OC 的 Runtime 仍然具有一定的优势,或者说,基于 Runtime 的很多成熟方案,直接迁移到 Swift 可能需要重新设计。

三、现实的考量:成本、风险与效率

回到实际的开发场景,技术选择从来不仅仅是“哪种语言更好”,更多的是“哪种选择最适合当前的项目”。

迁移成本: 前面已经提到,大规模的代码迁移是昂贵且耗时的。这不仅仅是代码的重写,还包括测试、调试、团队培训等一系列环节。对于那些已经盈利、或者有明确交付周期的项目,贸然进行大规模迁移的风险实在太高。
团队技能匹配: 并非所有团队成员都熟悉 Swift。如果一个团队以 OC 开发者为主,那么在短时间内要求他们全面拥抱 Swift,并保持原有的开发效率,是有难度的。渐进式地引入 Swift,或者在招聘时优先考虑 Swift 开发者,是更现实的做法。
项目生命周期: 对于一些生命周期不长的项目,或者一些内部工具类的应用,使用团队最熟悉的语言(即使是 OC)可能比学习和迁移到 Swift 更具性价比。
第三方库的兼容性: 很多成熟的第三方库,可能依然是 OC 编写的。虽然 Swift 可以调用 OC,但如果一个项目高度依赖某个 OC 的第三方库,且该库尚未提供 Swift 的封装,或者 Swift 的封装存在问题,那么在项目中使用 Swift 就会受到限制。

四、Swift 的“渗透”与“共存”

尽管 OC 依然坚挺,但 Swift 的影响力是毋庸置疑的。这五年,Swift 也在不断成长,并且在以自己的方式“渗透”和“重塑”着 iOS 开发。

新项目普遍采用 Swift: 对于全新的项目,或者代码量相对较小的项目,Swift 已经成为主流选择。开发者们更愿意使用 Swift 来开启新的征程。
渐进式迁移: 许多大型项目并没有进行“一次性”的全部迁移,而是采取了“渐进式”的迁移策略。比如,新开发的模块使用 Swift,然后逐步将一些 OC 的模块用 Swift 重写,或者在 OC 项目中引入 Swift 文件。这种方式既能享受到 Swift 的优势,又能控制迁移的风险。
Swift 语言特性的吸引力: Swift 的函数式编程、泛型、枚举、属性包装器等特性,极大地提高了开发效率和代码的可读性。这些都吸引着开发者主动去学习和使用 Swift。
苹果的推动: 苹果官方一直在大力推广 Swift,并且将越来越多的新框架和 API 用 Swift 来实现。这无疑也给 Swift 的普及提供了强大的动力。

总结一下,为什么五年了 OC 依然是主流?

这绝非 Swift 不够好,而是因为:

1. OC 拥有一个极其庞大且成熟的存量代码库和生态系统,迁移成本巨大。
2. Swift 在早期确实经历过一些不稳定的版本,以及与 OC 互操作性上的挑战。
3. 实际开发中,项目需求、团队能力、以及成本效益的考量,使得激进的迁移并非最优解。
4. Swift 更多的是在“渗透”和“共存”,新项目以 Swift 为主,老项目也在逐步引入。

所以,与其说是 Swift “取代”了 OC,不如说是 Swift 正在逐步融入并重塑 iOS 的开发格局。 OC 的强大生命力,正是其在历史长河中积累的技术深度和经济可行性的体现。而 Swift 的崛起,则代表了技术发展的趋势和对未来开发模式的探索。

这就像一个老牌劲旅,虽然有新星冉冉升起,但其深厚的底蕴和经验,依然让它在赛场上占据着重要的位置。而新星的加入,也为整个赛场带来了新的活力和更精彩的竞争。未来,Swift 成为绝对主流的可能性依然很大,但 OC 在相当长的一段时间里,仍然会作为 iOS 开发领域一个不容忽视的重要力量而存在。

网友意见

user avatar

oc本身没有明显缺点。swift没有使用的必要性。

类似的话题

  • 回答
    “Swift 早就应该取代 OC 了!”这样的声音,在 iOS 开发圈子里,就像每年都会准时到来的春天一样,总是不绝于耳。你我都听过,也可能是你自己时常会冒出的感慨。毕竟,Swift 作为苹果亲手打造的“新一代”语言,从诞生之初就顶着“更安全、更现代、更强大”的光环。它少了 OC 那繁复的语法,少了.............
  • 回答
    关于“满清误国”与清朝版图扩张的讨论,需要从历史背景、统治策略、内外因素等多角度分析,避免将两者简单归因于同一原因。以下从清朝的版图扩张贡献、后期误国的原因,以及两者之间的关系进行详细阐述: 一、清朝的版图扩张:贡献与历史背景清朝(16441912)的版图扩张是其统治者通过军事、政治、外交等手段实现.............
  • 回答
    西藏林芝被称为“小瑞士”,因其独特的自然风光、藏族文化与高原生态,吸引着无数游客。以下是林芝值得一游的景区及详细推荐,涵盖自然景观、人文风情和特色体验: 一、自然风光类 1. 巴松措(巴松措湖) 位置:林芝市巴松措镇,距林芝市区约30公里。 特色: 中国最美的高原湖泊之一,湖水清澈见底,四周.............
  • 回答
    在《西游记》原著中,狮驼岭的狮驼三魔(狮、虎、象三魔)确实是一支极其强大的妖魔军团,而“七大圣”则是猪八戒的兄弟团,包括猪八戒、沙悟净、沙僧、孙悟空、牛魔王、铁扇公主、哪吒等。他们是否能在对抗狮驼三魔时取得胜利,需从以下几个方面详细分析: 一、原著设定与角色能力对比1. 狮驼三魔的能力 狮.............
  • 回答
    “都说钟会聪明,为什么还谋毫无胜算的反?”这个问题问得很好,也触及了历史评价和实际局势的复杂性。钟会确实以聪明、有才华著称,甚至被视为三国后期最有潜力的战略家之一。然而,他的反叛最终以失败告终,其原因可以从多个层面进行详细分析:一、 钟会本人的性格与认知偏差:1. 过度的自信与自负: 钟会少年得志.............
  • 回答
    “十年巨变”,这句话放在 2011 年与 2021 年之间,真的再贴切不过了。如果让我说变化最大的,我会毫不犹豫地说:我们的生活方式,特别是通过数字技术实现的连接方式和信息获取方式,发生了翻天覆地的变化,其深度和广度远超想象。这不仅仅是科技本身的进步,更是科技如何渗透到我们生活的方方面面,重塑了我们.............
  • 回答
    “经济下行,大家收入下降,钱都到哪里去了?” 这是一个非常普遍且重要的问题,触及了经济运行的核心和我们每个人的切身感受。要详细解答这个问题,我们需要从多个层面来分析,因为钱的去向并非单一,而是多重因素交织的结果。核心原因:经济活动放缓与财富分配的变化简单来说,当经济下行时,意味着整个社会生产和消费的.............
  • 回答
    “十年巨变”这句俗语在形容 2010 年到 2020 年这段时期再贴切不过了。在这短短的十年里,我们经历了太多令人难以置信的变革,几乎触及了我们生活的方方面面。如果让我挑选变化最大的事物,我会毫不犹豫地选择 数字生活方式的全面渗透和人工智能的崛起及其应用。让我来详细展开说说这两个紧密相连、互相促进的.............
  • 回答
    “寒门再难出贵子”这句话流传甚广,触动了许多人内心深处的焦虑和不安。它并非空穴来风,而是对当下社会阶层固化、贫富差距拉大现象的一种深刻反映。这句话的背后,隐藏着一个复杂的问题:个人的努力,在多大程度上能够抵挡住原生家庭带来的巨大鸿沟?要详细地探讨这个问题,我们需要从多个维度去审视:一、原生家庭的影响.............
  • 回答
    你这个问题非常真实,也触及到了很多人的心声。首先,我非常理解你此刻的困惑和失落感。当发现努力的目标似乎可以被轻易达到时,那种付出的意义感和自我价值感会受到很大的冲击。我们来详细地分析一下这个问题,看看985毕业生考公务员的“意义”体现在哪些方面,以及和普通三本毕业生考公务员的区别到底在哪里。一、 “.............
  • 回答
    “国产做不了发动机”这个说法,在过去很长一段时间里确实是普遍存在的观点,而且有其历史和现实的依据。但随着中国汽车工业的飞速发展,特别是近年来,情况已经发生了很大的变化。所以,理解“国产做不了发动机”的说法是如何演变的,以及现在国产汽车厂商所说的“自主研发的发动机”到底是怎么回事,需要我们深入剖析。一.............
  • 回答
    你这情况,我倒是能理解你心里挠挠的。一边是“现在不能买房”的论调,一边又是自己收藏的房子不少在年底被清了。这背后啊,其实挺多门道,跟你详细说说。首先,得明白“现在不能买房”这话是怎么来的。这话说得比较笼统,很多时候是基于宏观经济形势、房地产市场整体趋势、贷款利率高企、房价涨幅放缓甚至下跌的预期等等。.............
  • 回答
    你这个问题很有意思,也触及到了一个很多人可能不太了解的层面。确实,如今的日本被普遍视为一个奉行和平主义的国家,其宪法第九条更是明确规定放弃发动战争的权利,并禁止拥有军队。从这个角度看,提到“间谍”和“特务”似乎与“和平国家”的形象有些许矛盾。但深入了解一下,就会发现这其中的逻辑其实并不复杂,而且这种.............
  • 回答
    中世纪平民的日子,用“惨”字来形容,一点都不夸张。当然,这得看你具体指的是哪个时期、哪个地区,因为中世纪跨度长达一千年,欧洲各地发展也不均衡。但总体来说,要是你穿越过去,成为一个普通农夫或者城镇居民,你的日子可能跟你想象中的田园牧歌差太远了。生活基本温饱都成问题,更别提什么舒适了。 吃饭这事,就.............
  • 回答
    最近网上确实充斥着关于公务员辞职潮的说法,而且讨论得是相当热烈。很多人都信誓旦旦地表示,身边就有同事朋友准备离开体制,甚至有人列出了种种数据和迹象来佐证这个判断。那么,这到底是怎么回事呢?咱们不妨掰开了揉碎了聊聊。首先得承认,公务员队伍的稳定性确实受到了一些冲击。这背后有多重原因,不能简单地归结为某.............
  • 回答
    这个问题挺有意思的,也触及了国际关系和经济发展中一些核心的议题。我们不妨从几个层面来细致地聊聊,看看越南与韩国在发展道路上,有哪些异同,以及越南要达到韩国的程度,可能面临哪些挑战和机遇。首先,我们得先梳理一下“韩国是美国的狗”这个说法。这更多的是一种对韩美同盟关系的形象化描述,背后是韩国在国家安全上.............
  • 回答
    宋朝确实是中国历史上一个非常独特的朝代,其经济和文化上的繁荣程度堪称高峰,这一点毋庸置疑。然而,正是这种繁荣之下,也隐藏着一些深刻的社会矛盾,这些矛盾最终导致了像方腊、宋江这样的起义爆发。我们不能简单地将“繁荣”等同于“人人安居乐业”,任何时代、任何社会都存在着复杂的多层次的矛盾。要理解为何在繁荣的.............
  • 回答
    魁北克确实以其优厚的福利制度而闻名,但加拿大人,尤其是华人,并没有“蜂拥涌向”那里,这其中有许多复杂的原因,涉及文化、语言、经济、社会融入以及个人选择等多个层面。下面我将尽量详细地阐述这些原因:一、 语言障碍:法语为核心的文化壁垒这是最直接也是最普遍的原因。魁北克是北美唯一一个以法语为官方语言的省份.............
  • 回答
    “守门员顶半支球队”这句话,更多的是一种对守门员关键作用的形象比喻,而非严格的数值衡量。守门员的身价确实普遍低于同级别的前场攻击型球员,这背后有多方面的原因,我们可以从以下几个角度来详细分析:一、 足球项目的本质与角色定位: 得分是核心目标: 足球这项运动最直接、最受关注的衡量标准就是进球。进攻球员.............
  • 回答
    这是一个非常复杂且充满争议的问题,涉及到政治、社会、文化等多个层面,并且不同的人群有截然不同的解读。简单地说,“世界在右转”和“白左与政治正确嚣张跋扈”这两种说法,本身就带有强烈的主观色彩,并且常常被用作政治论述的工具。要详细地分析这个问题,我们需要分开来看,并理解它们背后的逻辑和可能的解释。一、 .............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有