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

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

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

    现在苹果日渐衰落,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  
       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  
       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 暴露了你的水平..
    svenFeng
        45
    svenFeng  
       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 开发啦,不过语言的话彼此触类旁通,主要还在于知识的积累
    StephenW
        47
    StephenW  
       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
    请教一下,现在大家开发 iOS 用 Object C 还是 Swift 呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.