Objective-C和C++ 的区别有哪些?为什么苹果会选择前者?_为什么2020年ios开发还坚持使用objective-c?


- #问答
  • 1、 Objective-C和C++ 的区别有哪些?为什么苹果会选择前者?

    objectC就是C++的一种,封装了一些库,编译苹果系统下开发。QT也是一种C++,也封装了很多库,linux下用的多。

    如果linux+QT+移动通信设备库作为手机平台,那么水果手机的操作优势就没啥了,手机也不需要8G内存才算牛。估计2G的手机速度就飞快了,CPU也不要那么多核,有个三两个就好的不得了了。扯远了。

    总之,oc就是苹果版的C++而已。

  • 2、 为什么2020年ios开发还坚持使用objective-c?

    我做iOS开发也有好多年了,目前也还在写代码。我自己是OC为主,用Swift开发过一些页面,但是用的少。聊聊我的个人看法,欢迎交流讨论。

    先说我个人的结论:

    不使用Swift,要么是开发者在这块经验较少,要么是所参与项目中不适合使用,这项技能也就弱化了。

    下面从项目、团队(个人)以及语言的稳定性方便分析下


    项目

    新项目:

    新的项目没有“历史”负担,如果是有Swift开发经验的个人或者团队,一般会考虑使用新语言开发。但也不是一拍脑袋就用的,也要综合评估。看项目的体量、核心组件库支持情况、团队成员经验等。

    老项目:

    因为老项目基本都是OC开发的,有些项目随着时间已经迭代N多版本了,项目变的错综复杂、庞大牵一发而动全身的感觉,这种项目在版本迭代、维护还是会以OC为主。

    混合开发:

    目前有不少公司、团队在这样做。我之前所在公司也这样。

    比如核心的页面、功能使用OC,一些不重要的页面会用Swift开发,让团队开发人员学习使用,提高大家的实战经验。这个更多的是从技术角度考虑的。

    当然这个也和上面的老项目类似,要评估后才会做决策是否使用新语言。

    项目兼容性:

    有些项目中,会引用较多的第三方开源库或者核心库也是用第三方的,那么要看这些开源库是否支持Swift,有些老的开源库(只有OC版本)但是刚好是你需要的,你要考虑这个问题。

    团队

    要考虑开发团队是否都有Swift经验或者有核心开发人员有较为丰富的开发经验。

    如果团队成员缺少新语言经验,在项目开发时,考虑项目的计划、风险,一般都会选择更“稳妥”OC开发语言。

    有些不错的以技术为核心的公司团队,会组织开发者学习新语言,也会适当的在项目中使用。提高团队的“战斗力”。

    个人

    近几年的新入行开发者中,学习和使用Swift的已经多起来了。因为是从0基础学习的,基本会选择Swift语言。

    还有就是苹果官方也在推荐使用Swift,从学习资料、开发工具都在支持,所以对新入行开发者影响较大。

    而那些老iOS开发者,还是以OC为主,因为OC经验更多,同时也在学习和尝试Swift,但在某些情况下还是会优先选择OC,但也有做混合开发的。这个要看具体的项目、计划等,进行综合评估。

    语言的稳定性

    Swift毕竟是一个新语言,虽然经过了这么多年的迭代,但也是处于变化阶段,而且每次大版本都会有较大的变化,这个在开发以及维护上,是会有一定成本的。包括学习成本。当你在项目中遇到这种问题就够头大的了。

    比如:你的项目中使用Swift某一个版本,在下一次Swift更新后,你的项目中就需要针对这块做处理,可以理解为给项目带来了额外的开发成本。

    再比如:你的项目中使用了一个第三方开源库,因为是第三方的,所以你自己是不可控的,如果这个库在某个Swift版本兼容出问题了怎么办?相对来说,OC已经不会变化了,这种风险基本没有了。


    最后:

    回到你的问题:

    “最近招ios开发,发现还是使用oc开发语言为主,少用使用swift为主的,目前是2020年,是什么原因让大家不使用swift呢?”

    不同的公司和团队,招聘时也是针对当前项目来选人的

    比如:某家公司的项目都是OC开发的项目,那么在招聘时的要求就是“精通OC,而了解或者可以使用Swift开发,这属于加分项。

    再比如:某家公司的项目是纯Swift的,那么在招聘时的要求就肯定是“精通Swift,了解或者可以使用OC开发,这就属于加分项了。

    现在的互联网大厂(像鹅厂、阿里、头条等),大部分项目都是老项目,所以开发还是以OC为主。这些大厂的app都属于超级app了,光是iOS开发团队都是百人级别的,像底层组件的开发、支持可能是另外一个部门,也都是OC为主。所以在选择某个语言时,考虑的会非常多。即使是新项目,也会考虑时间成本,如果已经有完整的组件库,而且都是OC的,你说会使用哪个语言开发新产品呢?

    除非Swift有什么特别牛的特性,会给终端用户带来多大的使用体验提升、给产品带来更低的成本或者更高的收益,否则为什么要更换一个更有“成本”的开发语言呢?带来的是更多的不确定的风险,相信很多公司、团队都会有所考虑的。

    而一些创业公司或团队,用Swift的会比较多,因为历史包袱少,也就倾向于选择新东西了。所以在招聘时也会优先考虑选择开发者的Swift经验。但如果这个团队是以OC为主(开发人员都是OC经验为主),那么就优先找OC经验的开发人员了。

    新事物都是要有一个学习、适应以及进化的过程的,不论是这个事物本身要改进,使用的人也一样。现在GitHub上主流的开源库也都已经支持Swift,也有新的库只有Swift版本,说明大家是在拥抱新事物的。

    但是理想和现实是不同的,在现实的项目、团队中,是否使用新语言,真的是要综合评估的,不是说新的都好,也不是说老的一定对。而且作为技术负责人,是要做好这些评估的。

    针对实际的“环境”,选择合适的开发语言。能够高效的开发、缩短开发周期、提高项目质量和稳定性、降低开发和维护成本,能快速上线,才是硬道理。

    相信Swift会在未来完全取代OC,但短时间内还是不会的。

    作为开发者,不断的学习、更新自己的知识库,关注新事物的发展是必不可少的额,虽然不能在公司项目中使用,但可以应用在自己的个人项目中作为学习和实践的方式,扩展自己的技术能力。

    最后,“适合”的才是最好的!

  • 3、 有什么理由让我在以后的开发中更应该选择swift而不是objective c吗?

    你好,我是一名有四年安卓开发经验的程序猿,很高兴为你解答。

    个人体验

    我认为你可以使用Swift开发。在四年多的开发中,我做过半年的IOS开发,使用的Swift,也用过ObjectiveC。感觉Swift的语法更简洁一下。Swift通过引入nullable的概念,支持在编译期对nil值进行检查。这一举解决了ObjectiveC因为对nil值过于灵活和宽容导致的问题。而通过optionalchaining,原来的灵活性依然保留。

    在Swift之前,Objective-C是唯一的iOS编程。自从面世,Swift在多个编程语言排行榜均取得不俗的成绩。

    目前OC运用更为广泛,我认为未来,迅猛发展的Swift并不会很快让OC退出人们的视线。

    因为现在对于学习OC的人来说,Swift的语法和格式都比较不一样,思维转变到Swift上面不是太容易。平时工作忙碌,并不能里面集中的去学习。项目赶的比较紧的时候。

    总结

    如果是还在用Objective-C,可以在平时看一下Swift。学习新东西更有利自己能力的提升。以备不时之需。

    现在是技多不压身,多一技之长,就是多一块敲门砖。加油。

    我是七步的天。喜欢就关注我吧。有其他问题欢迎在评论区留言。

    欢迎点赞。非常感谢。

  • 4、 学objective-c前,需要先学c语言么?

    苹果的技术是非常标准的,他们不使用图跨平台性而牺牲了运行效率的Java.他们使用响应更快的面向对象C语言------Objective-C.

    我们知道,很多大型的软件和游戏都是面向对象C语言------C++写的.包括桌面版QQ等,也就是说还是C语言更适合做这些事情.

    这么说来,做苹果开发者就不是一件小众的工作.计算机的世界离不开C语言及其面向对象衍生产品(包括C++、Objective-C等).

    苹果iOS之所以比GoogleAndroid好用,很大程度上也是Objective-C的功劳,所以学这门编程语言你是真的非常棒!

    那么,学Objective-C之前就一定要把面向过程的标准C语言学好了,然后C++也是极其重要的.既然都是C系编程语言,建议你这三个都学一下,最后重点学习Objective-C.

    (不要去碰什么Swift、Kotlin这样的新型“性冷淡风”编程语言,他们还没有经过时间的考验,到底存不存在不合理,没人敢确定)

Related Content: