swift 相比起 objective-c 到底有什么优势呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Pandara
V2EX    程序员

swift 相比起 objective-c 到底有什么优势呢

  •  
  •   Pandara
    PandaraWen 2016-06-27 10:29:33 +08:00 16428 次点击
    这是一个创建于 3399 天前的主题,其中的信息可能已经有所发展或是发生改变。
    77 条回复    2016-06-29 13:33:32 +08:00
    crisfun
        1
    crisfun  
       2016-06-27 11:09:55 +08:00
    首先,是新东西,必然有一波吹

    其他的还是请 PL 专业人士,实际用户来说说的好
    yagao0o
        2
    yagao0o  
       2016-06-27 11:21:11 +08:00
    最重要的是: Swift 现在是亲儿子阶段……
    使用的便利性要高于 Objective-C ,毕竟设计时就是为了取代它。
    chaoxn
        3
    chaoxn  
       2016-06-27 11:23:00 +08:00
    其次,语法简洁,必然有一波吹

    其他的还是请 PL 专业人士,实际用户来说说的好
    DearMark
        4
    DearMark  
       2016-06-27 11:23:46 +08:00
    Objective-C :我还可以再战 10 年。
    ethanlu
        5
    ethanlu  
       2016-06-27 11:24:07 +08:00
    作为一个 0 基础入门的, swift 比起 OC 相对容易懂,主要是读起来很像英文句子。
    karonl
        6
    karonl  
       2016-06-27 11:24:19 +08:00 via iPhone
    开源啊,未来就很有变数
    SuperMild
        7
    SuperMild  
       2016-06-27 11:27:18 +08:00
    现在新出各种的语言主要注重两个方面的改进,写小程序时有甜度适中的语法糖,写大程序时有合理的特性减少出错可能性(比如 Optional Type )。
    ichanne
        8
    ichanne  
       2016-06-27 11:37:47 +08:00 via iPhone
    有些新特性 OC 里面没有,比如面向协议编程,当然, Swift 还有个致命的缺点,不能方便的支持热修复。
    c447279704
        9
    c447279704  
       2016-06-27 13:12:50 +08:00
    Swift 致力于成为一门通用的语言,这点和 OC 有根本的区别
    1OptionalType 更安全
    2 不像 OC 那样嗦,很简洁,少打很多没用的字
    3 强大的枚举和 Where
    4 泛型
    5 开源,随时加入新的 idea
    garipan
        10
    garipan  
       2016-06-27 13:37:22 +08:00
    亲儿子这点太重要了
    看一下近几年 OC 和 Swift 的排名变化就知道了
    只要苹果一天还占据市场主导地位, swift 就一天有优势
    而且还开源了,苹果是铁了心要把 Swift 做大了
    虽然现在 Swift 还有很多缺点,但是按照目前的发展速度,不用几年必然全方面超越 OC
    expkzb
        11
    expkzb  
       2016-06-27 13:46:58 +08:00   1
    swift 能令 objective-c 程序员更值钱
    beimenjun
        12
    beimenjun  
    PRO
       2016-06-27 13:52:11 +08:00
    大势所趋, Swift 能不能起来不知道, O-C 按照剧本应该要凋零的。
    walkingway
        13
    walkingway  
       2016-06-27 14:11:33 +08:00   1
    那些说 Swift 比 OC 简单的只是入了个门吧
    nicevar
        14
    nicevar  
       2016-06-27 14:52:30 +08:00
    趋势是 swift ,代码能简洁点,容易上手,其他的优势真想不到了
    会 swift 能做 iOS 开发,不过实际的工作中不会 oc 可能很多问题解决不了
    youxiachai
        15
    youxiachai  
       2016-06-27 14:57:01 +08:00
    反正.你搞 ios..两个都要学...orz
    WinterWu
        16
    WinterWu  
       2016-06-27 14:57:11 +08:00 via iPhone
    @ichanne 我觉得热修复才是 oc 的漏洞。从安全角度而言,绕过了大量“防火墙”。
    xhowhy
        17
    xhowhy  
       2016-06-27 16:03:23 +08:00
    swift 不仅具备 oc 的面向对象、动态等传统特性,还具备函数式编程、泛型等比较新的特性
    shawnclovie
        18
    shawnclovie  
       2016-06-27 16:17:58 +08:00
    等 swift 能和 c++互操作了, OC 也就只剩可以随便用 method swizzing 这点“优势”了。
    blue7wings
        19
    blue7wings  
       2016-06-27 16:47:10 +08:00
    我尤其喜欢 swift 的语法,我认为是最为优雅的。
    jackisnotspirate
        20
    jackisnotspirate  
       2016-06-27 16:53:38 +08:00
    用了 swift 就回不去 oc 了。
    dantegg
        21
    dantegg  
       2016-06-27 16:57:45 +08:00
    简单[笑 cry]
    chisj
        22
    chisj  
       2016-06-27 17:06:10 +08:00
    @jackisnotspirate 然而我用了快 1 年,又要回去了,蛋疼。
    MountainRain
        23
    MountainRain  
       2016-06-27 17:09:07 +08:00
    其实没有几家公司招 swift 的
    warcraft1236
        24
    warcraft1236  
       2016-06-27 17:11:26 +08:00
    OC 为啥不是亲儿子呢?不是乔布斯从他创办的公司带来的吗
    qw0258
        25
    qw0258  
       2016-06-27 17:28:02 +08:00
    swift 是一种包含了更多现代化编程语言特性的语言
    OC 是老古董
    araraloren
        26
    araraloren  
       2016-06-27 17:34:45 +08:00
    @yagao0o ~~从来没权威人士说或者官方人士说 swift 就是为了取代 oc
    LMkillme
        27
    LMkillme  
       2016-06-27 17:43:34 +08:00
    swift 相比 OC 先进,与此同时,也难多了,说 swift 简单的是不是只看了新闻?
    Soar360
        28
    Soar360  
       2016-06-27 17:56:18 +08:00
    Swift 优雅?你是没看过 C#吧?
    droiz
        29
    droiz  
       2016-06-27 18:05:49 +08:00
    语法清晰简洁,具有更多现代化语言特性,你学了就知道了
    murmur
        30
    murmur  
       2016-06-27 18:09:02 +08:00
    说 swift 比 obj-c 好大概和 Javascript 比 java 优雅是一个想法
    wweir
        31
    wweir  
       2016-06-27 19:14:46 +08:00 via Android
    函数式在正确性、多核利用等方面相对其它范式要高出不少
    yjxjn
        32
    yjxjn  
       2016-06-27 20:53:20 +08:00
    @expkzb 不能这么说吧,你看比如曾经的 Cobol , pascal 啥的,收入不一定比干移动互联网的挣钱啊。
    MartinLv
        33
    MartinLv  
       2016-06-27 21:22:16 +08:00
    语法简洁是最不重要的…… swift 真正有吸引力的是新的编程范式的支持,函数式、泛型、面向协议、还有一定的模式匹配能力。语言的表达能力甩 OC 几条街。另外静态方法调用性能比 OC 好。但是 OC 的 runtime 用不了了,热修复、 AOP 不如以前好搞。
    sensui7
        34
    sensui7  
       2016-06-27 21:26:00 +08:00
    有未来
    wizardforcel
        35
    wizardforcel  
       2016-06-27 21:29:50 +08:00
    把 oc 那些看着不顺眼的语法都改进了一番。

    你可以说语言只是一层皮,但是它毕竟是我们平常用的东西,美观与否会影响我们的生产力。
    7wN5407klUw768m0
        36
    7wN5407klUw768m0  
       2016-06-27 21:57:10 +08:00
    struct RecursiveFunc<F> {
    let o : RecursiveFunc<F> -> F
    }

    func Y<A, B>(f: (A -> B) -> A -> B) -> A -> B {
    let r = RecursiveFunc<A -> B> { w in f { w.o(w)($0) } }
    return r.o(r)
    }

    let factorial = Y { (f: Int -> Int) -> Int -> Int in
    { $0 <= 1 ? 1 : $0 * f($0-1) }
    }
    println(factorial(10))
    free9fw
        37
    free9fw  
       2016-06-27 22:30:24 +08:00
    pop , enum 、 struct 、各种简短的语法,不用写分号。快不快不知道,但对于我来说,写的东西变很少很少了,变很爽
    everettjf
        38
    everettjf  
       2016-06-27 23:09:47 +08:00
    虽然没学 swift 。但感觉更多现代化编程语言特性意味着更复杂(或者叫难学)。
    目前感觉 OC 能满足需求, swift 学习计划就一直搁置。
    DSKcpp
        39
    DSKcpp  
       2016-06-27 23:19:03 +08:00
    学习难度比 OC 大
    ChengLuffy
        40
    ChengLuffy  
       2016-06-28 00:12:12 +08:00
    范型很爽,但从编程这个过程来说,我感觉 swift 比 OC 有快感。。。个人感受
    mudkip
        41
    mudkip  
       2016-06-28 00:14:18 +08:00
    写代码的幸福感倍增。
    这个理由还不够么?
    hstdt
        42
    hstdt  
       2016-06-28 00:48:42 +08:00 via iPhone
    写起来开心,效率高,舒服。
    IvanLing
        43
    IvanLing  
       2016-06-28 01:00:44 +08:00 via iPhone
    请在项目中使用 swift 的举个抓
    nino789pzw
        44
    nino789pzw  
       2016-06-28 01:00:50 +08:00
    wohenyingyu01
        45
    wohenyingyu01  
       2016-06-28 01:11:28 +08:00 via iPhone
    调用不了 c 库。我们的 ios 代码 80%都是 C …
    rqzheng2008
        46
    rqzheng2008  
       2016-06-28 02:47:11 +08:00
    swift 3.0 API 又大改了,苹果设计语言怎么就不考虑一下向后兼容呢
    Perry
        47
    Perry  
       2016-06-28 03:13:49 +08:00
    易上手,新手写起来舒服
    一直在更新
    chai2010
        48
    chai2010  
       2016-06-28 06:42:24 +08:00 via iPhone
    objc 一直是补丁语言( c++也是一样的问题),它们虽然抱住了 c 的大腿,但是也包含了 c 的诸多问题,语言不能自由健康的发展进化。 objc 是该进垃圾桶了。

    swift3 语法没多大变化, API 部分也只是转换规则做了调整。最期待的还是 spm 能早日支持 iOS
    RqPS6rhmP3Nyn3Tm
        49
    RqPS6rhmP3Nyn3Tm  
       2016-06-28 07:07:44 +08:00 via Android
    Swift :从精通到入门
    XueSeason
        50
    XueSeason  
       2016-06-28 08:43:27 +08:00
    @MartinLv 好像看到小影的同事了。
    shiltian
        51
    shiltian  
       2016-06-28 08:45:13 +08:00
    插个题外话…
    iBooks 国区不可用以后,最新的 Swift 那本教程去哪找呀…
    xsown
        52
    xsown  
       2016-06-28 08:56:54 +08:00
    用过 swift ,会用 swift 的,一定不会再愿意用 oc 了
    觉得 swift 是吹的,都不是 iOS 程序员,或者是根本没好好用过 swift 的人
    chai2010
        53
    chai2010  
       2016-06-28 09:17:50 +08:00
    说 Swift 不兼容升级导致“从精通到入门”,估计有这几类: 1. 调侃; 2. 精通程度到 println 函数; 3. 非 iOS 开发者
    Ixizi
        54
    Ixizi  
       2016-06-28 09:21:23 +08:00
    fatestigma
        55
    fatestigma  
       2016-06-28 09:23:00 +08:00
    Swift 语法比 Obj-C 简单非常多,对于新手入门简单,这应该也是苹果希望的。另外作为苹果的亲儿子和 IBM 的干儿子,感觉发展还是很有劲头的吧。
    另一方面,好像 Obj-C 在 06 年开始进入 2.0 之后也没有什么大的更新了,而 C 、 C++ 还在发展之中,而 Swift 现在更新还是非常频繁的,可以进一步支持各种现代化语言的特性。
    PublicFourWord
        56
    PublicFourWord  
       2016-06-28 10:08:29 +08:00
    no C in Swift
    xiandao7997
        57
    xiandao7997  
       2016-06-28 10:22:15 +08:00
    chuhemiao
        58
    chuhemiao  
       2016-06-28 10:25:52 +08:00
    MartinLv
        59
    MartinLv  
       2016-06-28 10:32:11 +08:00
    @XueSeason 好巧。握个爪~
    noif
        60
    noif  
       2016-06-28 11:23:48 +08:00
    @ethanlu 写了 5 年的老鸟说 oc 完全就是在写英文段子
    quxw
        61
    quxw  
       2016-06-28 13:54:46 +08:00
    没用过 obj-c 但对其冗长的命名规则让我望而却步
    holy_sin
        62
    holy_sin  
       2016-06-28 13:58:13 +08:00   1
    枚举
    7wN5407klUw768m0
        63
    7wN5407klUw768m0  
       2016-06-28 15:29:29 +08:00
    @chuhemiao swift 写的 Y combinator ……
    chuhemiao
        64
    chuhemiao  
       2016-06-28 15:36:55 +08:00
    @Taojun0714 嗯,还以为是 rust ,看着都差不多。。。
    jason19659
        65
    jason19659  
       2016-06-28 16:36:17 +08:00
    easy to use
    xAx
        66
    xAx  
       2016-06-28 16:56:57 +08:00
    降低公司员工工资支出,进而提高公司利润
    xAx
        67
    xAx  
       2016-06-28 17:02:42 +08:00
    从语言本身分析一门商业公司推出的语言的好坏没任何意义,无利不起早
    crashX
        68
    crashX  
       2016-06-28 17:22:39 +08:00
    说 swift 比 OC 简单的就跟说 scala 比 java 简单一样,估计没做过项目吧。还有 OC 的 runtime 和 KVO ,这俩纯 swift 目前没有,是硬伤。 swift 的新特性可以使代码更严谨,并不能做太多的事情。当下而言纯 swift 的代码不如纯 OC 能做的事情多。
    SunnyCoffee
        69
    SunnyCoffee  
       2016-06-28 18:02:36 +08:00
    oc 的历史遗留问题太多了吧。
    nil,NSNull,NULL,true,YES ,作为个新手,真是把人绕晕了。 case 不支持 String ,没有 java 的 @Override ,@Deprecated 。
    很多东西,单纯的靠升级很难解决,还不如直接换了。
    poetowen
        70
    poetowen  
       2016-06-28 20:52:36 +08:00
    Safe Fast Modern
    n6DD1A640
        71
    n6DD1A640  
       2016-06-28 23:42:03 +08:00
    closure
    webjin1
        72
    webjin1  
       2016-06-29 01:32:42 +08:00 via Android
    看名字越短越好,何况它还带-
    ehs2013
        73
    ehs2013  
       2016-06-29 07:18:35 +08:00
    @webjin1 objc vs swift
    webjin1
        74
    webjin1  
       2016-06-29 09:34:37 +08:00 via Android
    @ehs2013 简写也算?
    zhangweifang
        75
    zhangweifang  
       2016-06-29 09:39:13 +08:00
    swift 语言,学习的时候感觉好多语言特性设计的真是正确的,但是一到用的时候就不知道怎么下手,相对 ObjC 更直观, swift 更抽象的感觉。
    Override
        76
    Override  
       2016-06-29 10:14:07 +08:00
    我仿佛又听到有人在背后 @我
    @SunnyCoffee
    d553296416
        77
    d553296416  
       2016-06-29 13:33:32 +08:00
    swift 动态部署能力很差。。。不像 oc 有 reactnative wax weex luaview jspatch 等
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3504 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 10:19 PVG 18:19 LAX 03:19 JFK 06:19
    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