一直用着 Objective-C,真的需要转 Swift 吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vansouth
V2EX    程序员

一直用着 Objective-C,真的需要转 Swift 吗?

  • /li>  
  •   vansouth 2017-08-26 13:06:38 +08:00 13288 次点击
    这是一个创建于 3019 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在苹果日渐衰落,iOS 开发者木有过硬的技术想找份好点的工作也是难本人搞了 Objective-C 大概 3 年了,眼看 swift 也不断成熟起来,但是鉴于自己最近对 iOS 前期不是太看好也不知道该不该去深入研究 swift,还是去学习下 python,php,go 等后台语言

    59 条回复    2018-07-27 19:24:53 +08:00
    liyuandashabi
        1
    liyuandashabi  
       2017-08-26 13:15:25 +08:00
    很明显转投其他语言,很难想象三年的 iOS 开发员居然只会 OC?至少后端语言会一种吧.swift 怎么说呢,现在比较尴尬,还在快速发展期,国内用的不多,如果你真想 iOS 开发一条路走到黑,并有足够的物质条件支持可以试一试,毕竟不管哪一行业发展的怎么样,高端人才总是稀缺的.作为同为 iOS 开发员的我来说,已经准备转后端了,服侍苹果爸爸表示很心累.
    forwind
        2
    forwind  
       2017-08-26 13:53:48 +08:00
    苹果日渐衰落?
    zj299792458
        3
    zj299792458  
       2017-08-26 13:54:56 +08:00
    苹果日渐衰弱…… objective c 比 swift 的明显优势是,它可以直接调用 c
    fcka
        4
    fcka  
       2017-08-26 13:55:04 +08:00 via Android
    国内用的不多?
    fcka
        5
    fcka  
       2017-08-26 13:56:00 +08:00 via Android
    @zj299792458 swift 才是可以真正直接调用 C 的,OC 是解释型语言。不知道这个错误知识是哪里来的。
    gen900
        6
    gen900  
       2017-08-26 14:05:05 +08:00 via iPhone   2
    @fcka 不懂不要乱说。
    anyele
        7
    anyele  
       2017-08-26 14:45:03 +08:00
    你的头像赢了
    cielpy
        8
    cielpy  
       2017-08-26 14:49:05 +08:00
    @fcka OC 是解释型的?
    YYYeung
        9
    YYYeung  
       2017-08-26 15:16:19 +08:00
    学 Swift 还是不错的,毕竟是门比较现代的语言。况且,Swift 上手了之后是真的不想再写 OC, 即使 Swift 是边学边写
    xiaoc19
        10
    xiaoc19  
       2017-08-26 16:05:57 +08:00 via iPhone   1
    我们连生产环境的后台都是用 Swift 写的,你还在思考这个问题,再说你说你要学后几门语言,其实你大可以直接去学,有几年编程语言,学新语言不是很快的事吗,纠结什么
    SnailLin
        11
    SnailLin  
       2017-08-26 16:13:06 +08:00
    学一门语言有那么难么~你要是说有太多的 API 记不住情有可原,但是 Swift 和 OC 的 API 基本都是一样的
    elgae
        12
    elgae  
       2017-08-26 16:13:22 +08:00
    @fcka 你最牛
    fcka
        13
    fcka  
       2017-08-26 16:50:34 +08:00
    @gen900 这你就撞枪口上了。我是 Swift contributor,我在国内推广 Swift 的时候怕是你还没听过。

    @cielpy @elgae
    fcka
        14
    fcka  
       2017-08-26 16:51:11 +08:00
    @cielpy OC 是依靠 runtime 解释的动态语言
    fcka
        15
    fcka  
       2017-08-26 16:51:49 +08:00
    @cielpy 如果你写过 Swift,就会知道什么才是编译型语言。OC 的“编译”只是静态语法检查而已。
    vansouth
        16
    vansouth  
    OP
       2017-08-26 17:10:05 +08:00
    @liyuandashabi #1 开头自己不够努力,现在想想觉得自己会的太少
    vansouth
        17
    vansouth  
    OP
       2017-08-26 17:11:39 +08:00
    @xiaoc19 #10 纠结学哪门而已,因为现在感到有点迷茫
    vansouth
        18
    vansouth  
    OP
       2017-08-26 17:12:39 +08:00
    @SnailLin #11 不是说难得问题,是不知道继续在 ios 这块研究下去还是学下其他语言
    zj299792458
        19
    zj299792458  
       2017-08-26 17:52:23 +08:00 via iPhone
    @fcka 你是故意反着说么?我写了这么多夹杂 C 的 OC 代码,突然变成解释语言了。那 C 也是解释语言,只有 swift 是编译语言是吧
    yidinghe
        20
    yidinghe  
       2017-08-26 17:54:30 +08:00 via Android
    听库克的没错
    plqws
        21
    plqws  
       2017-08-26 18:05:50 +08:00
    @fcka 亮 github 账号打大家的脸嘛
    fcka
        22
    fcka  
       2017-08-26 18:08:39 +08:00 via Android
    @zj299792458 OC 真的是依赖 runtime 执行的……不是反话…… swift 可以无缝使用 C OC 的代码,直接在 .swift 文件里写都支持。不过 swift 不支持和 C++ 互调。
    fcka
        23
    fcka  
       2017-08-26 18:16:11 +08:00 via Android
    @plqws 就不(^)
    diercigai
        24
    diercigai  
       2017-08-26 18:18:03 +08:00
    @fcka 依赖 runtime 其实也不能叫做解释型语言,其实 oc 是用 c 实现的一个面向对象语言,是编译型语言,只是 oc 的各种实现是通过 runtime 实现的。解释型语言的一个特点是不需要编译,语言通过解释器转成执行代码,而明显 oc 是要编译后才能调用 runtime 执行。
    plqws
        25
    plqws  
       2017-08-26 18:21:06 +08:00
    https://news.ycombinator.com/item?id=4212441

    不过这也应证了为什么 Xcode 对 Swift 的兼容看起来一点经验都没有
    elgae
        26
    elgae  
       2017-08-26 18:22:28 +08:00
    @fcka contribute 的什么,哪个 commit,让我膜一下
    fcka
        27
    fcka  
       2017-08-26 18:23:30 +08:00
    @diercigai OC 的编译是一种奇怪的编译。。。严格来讲,OC 不是解释型语言,而是编译型动态语言。
    LINAICAI
        28
    LINAICAI  
       2017-08-26 18:43:12 +08:00
    其实都好,OC 不扎实用 Swift 也是效率不高
    难就难在两种语言的编程模式需要转换,有时候脑袋不好使。。。
    free9fw
        29
    free9fw  
       2017-08-26 19:04:50 +08:00
    学呗,几天就会了
    xiaoc19
        30
    xiaoc19  
       2017-08-26 19:37:52 +08:00 via iPhone
    @vansouth 所以别纠结哪门语言,全部学了,哪门喜欢就留哪门,一个星期就能决定好了,多看看国外的发展趋势,你眼光老看国内的,几年后又落后了
    cyr1l
        31
    cyr1l  
       2017-08-26 20:06:08 +08:00 via iPhone
    不需要,OC 挺好的,再等几年也来得及。
    libook
        32
    libook  
       2017-08-26 20:17:58 +08:00 via Android
    我是来看热闹的。。。

    现在其实好多语言和引擎已经模糊解释型和编译型的界限了,往往混合思想去糟粕取精华会起到更好的效果。
    onevcat
        33
    onevcat  
       2017-08-26 20:22:24 +08:00 via iPad   8
    OC 是解释型语言。。。大开眼界,茅塞顿开。。。感觉这几年代码都白写了。。
    TimePPT
        34
    TimePPT  
    PRO
       2017-08-26 20:34:31 +08:00 via iPhone
    @onevcat 都惊动喵神了
    vansouth
        35
    vansouth  
    OP
       2017-08-26 20:38:56 +08:00
    @onevcat #33 看到猫神,瑟瑟发抖
    KylinRoc
        36
    KylinRoc  
       2017-08-26 20:42:42 +08:00
    国内推广 Swift 是什么梗,Apple 自己的宣传都被狗吃了吗……
    so898
        37
    so898  
       2017-08-26 21:46:37 +08:00
    你们可以这么分析,但是说 Objc 是解释型语言就过分了吧……
    你们也把 Objc 的 Runtime 想的太神乎了吧……
    mooczz
        38
    mooczz  
       2017-08-26 22:00:46 +08:00
    @fcka 大开眼界,白写了两年多 OC
    caiyue1993
        39
    caiyue1993  
       2017-08-26 23:30:56 +08:00
    @fcka Talk is cheap, show us your github all right?
    comcuter
        40
    comcuter  
       2017-08-26 23:31:25 +08:00
    @fcka 除非你是 14 年 WWDC 前就开始推广了, 那时候确实是没有听说过.
    uuair
        41
    uuair  
       2017-08-26 23:34:59 +08:00
    来看猫神,然后看看大家怎么讨论解释这事的,我觉得没完!
    beimenjun
        42
    beimenjun  
    PRO
       2017-08-26 23:38:12 +08:00
    Swift 是一个很不一样的语言,值得一学,而且现在 4 出来了,很多坑很多磨难你已经感受不到了。

    我反正不太想写 Objective-C 了。
    whileFalse
        43
    whileFalse  
       2017-08-26 23:49:10 +08:00 via iPhone
    @xiaoc19 请问什么公司用 swift 写后端
    HuangLibo
        44
    HuangLibo  
       2017-08-27 00:02:41 +08:00
    @fcka 暴露了你的水平..
    Em5O7B1JGfjQnBry
        45
    Em5O7B1JGfjQnBry  
       2017-08-27 00:13:00 +08:00 via Android
    哇。。。大佬们讨论编译 /解释,静态 /动态语言的时候,能不能把概念查清楚哇。。。

    编译器:代码->编译器->另一种代码
    解释器:代码->解释器->执行

    静态类型:编译时检查类型
    动态类型:运行时检查类型

    我是菜比,可能说的不对,欢迎指正
    qiuncheng
        46
    qiuncheng  
       2017-08-27 00:26:53 +08:00 via iPhone
    swift 很不错的,目前公司已经使用 swift 开发啦,不过语言的话彼此触类旁通,主要还在于知识的积累
    TheOutgoing
        47
    TheOutgoing  
       2017-08-27 00:55:53 +08:00 via iPhone
    大开眼界,厉害厉害。
    jhdxr
        48
    jhdxr  
       2017-08-27 00:59:06 +08:00
    非得用编译型和解释型来区分的话。。。你们谁来给我解释解释 java 算什么?
    gen900
        49
    gen900  
       2017-08-27 07:20:34 +08:00 via iPhone
    @fcka 多大的头衔?没听过。你对 oc 了解不多倒是看出来了。
    qq2511296
        50
    qq2511296  
       2017-08-27 09:10:24 +08:00
    学什么学 学了能找到工作吗? iOS 开发都没人要了 现在培训班都不开 iOS 课程了 没前途
    转行做后端吧
    pythons
        51
    pythons  
       2017-08-27 09:15:40 +08:00
    现代语言还区分编译和解释? 你们不蛋疼?
    Lispre
        52
    Lispre  
       2017-08-27 11:45:36 +08:00
    近三年之内不需要,你更不用急
    googlebot
        53
    googlebot  
       2017-08-28 07:42:09 +08:00 via Android
    解释型语言很容易反汇编的,直接还原源码的,
    objc 到现在没出现反编译工具,

    垃圾 java,.net,python 早都有反编译器了,
    hellowwo
        54
    hellowwo  
       2017-08-28 08:04:10 +08:00
    @fcka oc 里面大量的底层函数直接用的 c 方法写的,即使 oc 的 runtime,实现原理用的也是 c 的动态交换指针地址。你跟我说 oc 是解释性语言。真是大开眼界。
    sfz97308
        55
    sfz97308  
       2017-08-28 10:37:55 +08:00
    @fcka 的观点真让我大开眼界,感觉七年的 iOS 白做了...
    另外对楼主的问题,语言只是编程工具而已,多了解一个并不难。Swift 里有很多 Objective-C 并没有的现代编程思想,不管你是不是想长期从事 iOS,都推荐了解一下。
    vansouth
        56
    vansouth  
    OP
       2017-08-28 10:54:09 +08:00
    感谢各位意见,经过几天的思考也给自己定下了点目标 ( ps:看到各位大们在开战吓得不敢说话了)
    andychen20121130
        57
    andychen20121130  
       2017-08-28 11:10:48 +08:00
    只会 OC。没毛病
    BiuBiuBiuX
        58
    BiuBiuBiuX  
       2017-09-04 16:32:32 +08:00
    1 年半 OC,最近实习在用 Swift。。。 发现了 Swift 是真的好啊。。。
    fundebug
        59
    fundebug  
       2018-07-27 19:24:53 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     974 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 19:16 PVG 03:16 LAX 11:16 JFK 14:16
    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