面试题一《swift和oc的区别》
一、来源
这道题来自网上一篇文章《100家公司iOS面试题管理》,这份题目虽然题目质量不高,但是覆盖面比较全,有学习的价值
二、解析
1、swift 比 OC更年轻,这意味着 swift 可以采用其它语言优秀的语言特性,使swift更简洁、容易阅读维护,采用更少的代码编写更多的东西。
比如OC独有的中括号被人诟病,以及OC语言异步编程block嵌套后对齐的方式十分丑陋,swift更好优化了这一点。
2、OC建立在C语言之上,利用消息转发机制实现动态化,一方面增加了灵活性同时却降低了程序的运行效率。OC的内存管理内部多处使用了类或者全局的spinlock同样降低效率。
swift是否进行类NSObject的动态化是可选的,可以根据需求进行编译时的方法绑定,这样可以加快执行速度。
因此swift的效率理论上比OC要高。
3、Swift区分值类型和引用类型、并对值类型作为参数进行了优化,比如写时拷贝,这样方便了多线程编程,减少了锁的使用,同样加快了效率。
4、Swift和OC的内存都是使用引用计数,与OC不同的是,OC中依然可以使用C语言层面的对象,这样内存管理相对来说更复杂一点。
5、Swift语言中加强了类型的校验,比如let和var,?和!,减少错误的产生
6、因为可以无缝使用C++和C库,现在某些项目依然使用OC较多,swift的变化快,部分语法向前不兼容更是加剧了这一点。在国内应用上,OC比Swift更多。
7、Swift可以面向协议编程实现多继承的特性,可以函数式编程,给予语言编程更多模式选择。OC已经不再更新了。
8、Swift有跨平台的计划,现在的语言不跨平台很难生存,全平台是趋势。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2017-07-13 微信iOS消息拦截插件教程-Tweak HelloWorld