新人求教, ios 入门语言选择 Swift 还是 object-c - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TanLeDeDaNong
V2EX    iOS

新人求教, ios 入门语言选择 Swift 还是 object-c

  •  
  •   TanLeDeDaNong 2019 年 2 月 26 日 5286 次点击
    这是一个创建于 2574 天前的主题,其中的信息可能已经有所发展或是发生改变。

    苹果官方推广 swift 但据说大公司好像还在用 object-c, 是吗?

    9 条回复    2019-02-28 08:21:39 +08:00
    Vancion
        1
    Vancion  
       2019 年 2 月 26 日
    国内 ObjC,国外 Swift。
    找工作 ObjC,自己写着玩 Swift
    TanLeDeDaNong
        2
    TanLeDeDaNong  
    OP
       2019 年 2 月 26 日
    @Vancion 感谢
    finab
        3
    finab  
       2019 年 2 月 26 日   2
    学这两个其实没什么区别,个人建议学 Swift,语法对新手友好。

    熟练后你最多再花一周就能写 ObjC 的代码了,先学 ObjC 转 Swift 也差不多。(参考我当初 ObjC 转 Swift,是第 0 天直接上手写项目)

    学 iOS 开发是学 UIkit 那些东西, 两种语言都是一样的,往浅里来讲只有语法差异(并不是)


    学 iOS 开发最最最关键的一点就是多动手写项目解决实际问题, 选什么语言真的无所谓,反正到最后你都会。
    TanLeDeDaNong
        4
    TanLeDeDaNong  
    OP
       2019 年 2 月 26 日
    @finab 多谢指教
    chipmuck
        5
    chipmuck  
       2019 年 2 月 26 日   1
    拿一个我之前的回答,你可以参考一下。

    0. 从语言的 logo 谈起。

    看看可怜的 Objective-C 发布和修订那么多年了,至今也没有一个像样的 logo 来跟 Swift 这个正统的「官方续作」相提并论(当然这纯属是一个笑话)。所以,我们是不是可以仅从设计良好的「商标」的角度来决定该学习哪一个?(当然这同样是一个玩笑)

    1. 现在?

    学习客户端语言,讲个套路无非就是语法、设计模式、UI 和项目实例。咱一个个来说,首先语法。无人不知无人不晓,Objective-C 继承自 Smalltalk 的语法,其中的消息发送(也就是方法调用)类似自然语言的叙述方式:长,但清晰明确。很多刚接触 Objective-C 的开发者只是简单地认为,长名称即是冗余、繁复,但细看官方提供的代码样例,其实可以轻易地从中读出某个代码片段或者方法名所代表的含义和作用,甚至在定义方法名称时,你可以跟造句一样,按照句型结构来划分名称结构,反而有种浪漫融入于代码之中。这个例子并不是说 Swift 难以理解,相反,按照 Apple 的宣传文案,Swift 是「人人能编程」活动中极为重要的工具,显然不会设计成一条陡峭的学习曲线,让初学者难以琢磨。恰恰我认为 Swift 这个「包罗万象」的设计结构(优化常见的编译错误、枚举中包含类定义、扩展、泛型等),往往在编程的时候会忽略一些在用 Objective-C 写时经常涉及到的一些问题,比如判空、类型判断等( Swift 对应为 Optional 和 as 语法),少了一些语言的特色也就少了一根技能树的枝叉。

    面试呢?目前除了个别公司在 JD 中会标明 Swift 为核心招聘技能以外,绝大多数还是以 Objective-C 为主。

    2. 未来

    TIOBE 的语言趋势排行准不准?我觉得一定程度上,能反映出当下某种语言或者说某种平台的社区热度,但并不能预知未来的发展趋势。如果按照「众望所归式」的故事走向,Swift 定会一统江湖。但如果不是,看看现在的 Flutter、React Native 等一众跨平台,无论从文档质量、编程环境、社区扶持,都有赶超之势。扯远了,如果从问题的两者挑一个,可预计的未来,还是 Swift 的。

    3. 所以,建议?

    如果想体验几年前「麻烦」的 MRC 和「顽劣」及不明所以的 Bug,并试着习惯、解决它们,最终积攒经验成为一位大佬,那么就从 Objective-C 学起;

    如果为了公司的业务,为了完成手上的任务,最终成为技术部中广为传颂的「 fix 大神」,那么就根据公司项目使用的语言学起;

    如果想自己创造一个世界,创造一个属于自己或者服务于社区的东西,那么想必 Swift 是最好的选择。
    donnior
        6
    donnior  
       2019 年 2 月 26 日
    非工作
    我能说我 OC 转 RN 了么? ^_^
    vHypnos
        7
    vHypnos  
       2019 年 2 月 27 日
    @donnior #6 现在应该是 flutter 的浪潮了吧
    qfdk
        8
    qfdk  
    PRO
       2019 年 2 月 28 日 via iPhone
    @vHypnos 同意
    diyisoft
        9
    diyisoft  
       2019 年 2 月 28 日 via iPhone   1
    @finab 大佬的 V2EX 开源客户端很棒,谢谢。现在正在用这款 app 回这条消息,app 代码也很棒。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2590 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 15:37 PVG 23:37 LAX 08:37 JFK 11:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86