V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TanLeDeDaNong
V2EX  ›  iOS

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

  •  
  •   TanLeDeDaNong · 2019-02-26 11:03:53 +08:00 · 4872 次点击
    这是一个创建于 2105 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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


    学 iOS 开发最最最关键的一点就是多动手写项目解决实际问题, 选什么语言真的无所谓,反正到最后你都会。
    TanLeDeDaNong
        4
    TanLeDeDaNong  
    OP
       2019-02-26 11:22:34 +08:00
    @finab 多谢指教
    chipmuck
        5
    chipmuck  
       2019-02-26 14:03:43 +08:00   ❤️ 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-02-26 14:07:56 +08:00
    非工作
    我能说我 OC 转 RN 了么? ^_^
    vHypnos
        7
    vHypnos  
       2019-02-27 10:07:37 +08:00
    @donnior #6 现在应该是 flutter 的浪潮了吧
    qfdk
        8
    qfdk  
       2019-02-28 04:53:18 +08:00 via iPhone
    @vHypnos 同意
    diyisoft
        9
    diyisoft  
       2019-02-28 08:21:39 +08:00 via iPhone   ❤️ 1
    @finab 大佬的 V2EX 开源客户端很棒,谢谢。现在正在用这款 app 回这条消息,app 代码也很棒。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   973 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:23 · PVG 03:23 · LAX 11:23 · JFK 14:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.