长远看 Apple 的平台上开发, Swift 真的可以完全取代 OC 吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
kalintw
V2EX    iDev

长远看 Apple 的平台上开发, Swift 真的可以完全取代 OC 吗?

  •  
  •   kalintw 2015-08-06 09:02:44 +08:00 10771 次点击
    这是一个创建于 3723 天前的主题,其中的信息可能已经有所发展或是发生改变。
    你认为以后OSX 和 iOS开发,Swift真的可以完全取代OC吗?

    貌似趋势就是大一统,Win也试图PC/Pad/Phone, 3P合一。统一之后App都是一次开发到处可用了,硬件是载体,背后的信息服务和生态才是卖点。

    另外,Web技术也有大一统的趋势,浏览器有入侵桌面操作系统地盘的趋势。

    各位来唠唠,卖香烟瓜子矿泉水的也欢迎路过:)
    55 条回复    2015-09-06 15:06:34 +08:00
    Vedar
        1
    Vedar  
       2015-08-06 09:58:33 +08:00
    应该可以吧 不过是有过程的 毕竟OC树大根深 我想除了时间没有啥能阻止swift取代oc了
    onevcat
        2
    onevcat  
       2015-08-06 10:04:35 +08:00   1
    当然可以..而且并不需要长远看。Swift 成为 Apple 平台主流语言这件事情在两到三年内就会发生。
    tini32
        3
    tini32  
       2015-08-06 10:07:38 +08:00
    虽然从跑分和理论上来看,swift甚至比OC还要快,但是我还是担心:跑分和理论只是机器的体验,java在某些方面号称胜过C语言
    banxi1988
        4
    banxi1988  
       2015-8-06 10:10:10 +08:00
    在我的 iOS 编程上经验里,我觉得 OC 只是对 Swift 的某一些功能的一种补充。
    fo2w
        5
    fo2w  
       2015-08-06 10:18:51 +08:00
    不用看, 我已经传教swift很久了
    wezzard
        6
    wezzard  
       2015-08-06 10:21:43 +08:00
    Swift fucks Objective-C off.
    summic
        7
    summic  
       2015-08-06 10:28:25 +08:00
    我们的APP用swift重写了,俩OC同事现学现写,只用了一个月
    sinux
        8
    sinux  
       2015-08-06 10:35:54 +08:00   2
    webfrogs
        9
    webfrogs  
       2015-08-06 10:44:27 +08:00
    @onevcat 一入 Swift 深似海,从此 OC 是路人。
    z5n0w
        10
    z5n0w  
       2015-08-06 10:54:53 +08:00
    @sinux 左上角 中间 右下角 这3个图标是什么?
    ikaros
        11
    ikaros  
       2015-08-06 10:58:29 +08:00
    @z5n0w 好像是rust ruby erlang
    airycanon
        12
    airycanon  
       2015-08-06 10:58:37 +08:00
    @z5n0w Rust Ruby Erlang
    pockry
        13
    pockry  
       2015-08-06 10:58:52 +08:00
    国外用Swift都用到飞起,都在用Swift写开源库占坑,国内还在讨论要不要学,感到肩上任重道远啊。
    66450146
        14
    66450146  
       2015-08-06 11:56:18 +08:00
    On an infinite timescale, we're all dead.

    不考虑时间都是耍流氓

    另外我觉得不用几年,写 objc 的就是老古董了……
    Tedko
        15
    Tedko  
       2015-08-06 12:08:51 +08:00 via Android
    就连mansory作者都说不再更新oc pod库只debug。。我自己小伙伴写开源lib写得飞起。。为啥要oc?
    v2Panda
        16
    v2Panda  
       2015-08-06 12:18:17 +08:00
    同意啊 是时候swift用起来。
    blacklee
        17
    blacklee  
       2015-08-06 12:28:50 +08:00
    目前的App不打算用Swift重写
    但是下一个App会慎重考虑丢弃Obj-C
    iTwoEleven
        18
    iTwoEleven  
       2015-08-06 12:33:53 +08:00
    Swfit做个人项目开发语言已经1年多了(从Swift发布开始,各种坑……),公司目前的项目都在维护+小更新阶段,OC依旧主力
    alexzuo
        19
    alexzuo  
       2015-08-06 12:34:44 +08:00
    @onevcat 居然看到一个活生生的喵神!请问swift2.0出来之后,你的书会更新吗?
    pljhonglu
        20
    pljhonglu  
       2015-08-06 12:37:54 +08:00 via iPhone
    我在等apple用swift重写Cocoa
    shellbye
        21
    shellbye  
       2015-08-06 13:55:52 +08:00
    新手准备入门,是不是该直接上swift?
    beimenjun
        22
    beimenjun  
    PRO
       2015-08-06 13:59:32 +08:00
    可以的,所以必须学 Swift 。
    mko0okmko0
        23
    mko0okmko0  
       2015-08-06 14:06:08 +08:00
    OC可以做系统级的开发,但你只是要做桌面软体或是APP的话OC就可以放生了.
    hilenlai
        24
    hilenlai  
       2015-08-06 14:06:44 +08:00
    大势所趋
    typcn
        25
    typcn  
       2015-08-06 14:07:28 +08:00
    不会取代

    就像 C 能取代 B,而 C++ 取代不了 C

    更何况 Swift 还是像 Java 一样,低效率,高消耗,字节码虚拟机语言
    onevcat
        26
    onevcat  
       2015-08-06 14:29:57 +08:00   1
    @alexzuo 会的..最近正在弄这件事儿。
    Imshaha
        27
    Imshaha  
       2015-08-06 15:56:21 +08:00
    刚刚看到的一个 Objective-C to Swift Converter - 一款可将 Objective-C 转换成 Swift 语言的工具 ,在这里http://objectivec2swift.net/#/about
    Banio
        28
    Banio  
       2015-08-06 16:10:55 +08:00
    苹果花这么大力气 肯定是为了取代OBC呀 估计用不了3年 swfit就得超过OBC
    kepenj
        29
    kepenj  
       2015-08-06 16:23:50 +08:00
    看这现在大牛们swift玩的666,再看看自己。 吓得浑身发抖~~
    jiangpeng
        30
    jiangpeng  
       2015-08-06 17:21:11 +08:00
    Cocoa 不用 Swift 重写就是逗你玩
    special
        31
    special  
       2015-08-06 18:20:33 +08:00
    可以,Apple 的推力大家都有目共睹
    (说不定再过几年 xCode 直接不支持 OC
    zartouch
        32
    zartouch  
       2015-08-06 22:19:02 +08:00
    苹果和其他公司不同的在于,苹果很多时候会强推,说不准什么时候,新上架的app就只允许用swift来构建了。。
    spencerqiu
        33
    spencerqiu  
       2015-08-06 22:32:32 +08:00
    @Imshaha
    如此观之,这一只真的是技术白妹子......
    CRVV
        34
    CRVV  
       2015-08-06 23:14:46 +08:00
    @typcn
    为什么我一直以为Swift和Objective-C编译出来的东西是一样的...

    http://stackoverflow.com/questions/24052386/does-swift-compile-to-native-code
    kingcos
        35
    kingcos  
       2015-08-06 23:20:00 +08:00
    @onevcat 感谢喵神!!!前一段也想问您是否会更新,太良心了!!!赞一个~

    顺便问问大家,关于 iOS 框架,Cocoa Touch 有没有全面,基础的资料,或者学习的方向==求指点,谢谢。。。
    teriyaki
        36
    teriyaki  
       2015-08-06 23:37:25 +08:00
    go andrular 那些刚出来也是一堆人热捧
    teriyaki
        37
    teriyaki  
       2015-08-06 23:39:47 +08:00
    objective-c其实比swift简单
    swift是貌似简单 实质复杂

    等项目上了10W行+
    和多人协作

    你再看看 嘿嘿
    nino789pzw
        38
    nino789pzw  
       2015-08-06 23:44:52 +08:00
    @teriyaki andrular是什么? go是说的golang?
    teriyaki
        39
    teriyaki  
       2015-08-06 23:45:52 +08:00
    objectivec是单继承+接口的鼻祖

    delphi java c#都是学生
    本质编程模式 这4种语言没什么不同

    很简单很优雅 当然java写出来有点嗦

    swift要复杂 有些貌似脚本的其实不一定简单 例如scala 这个全世界第二难
    性能也没明显优势

    赞同上面说的

    何时cocoa/cocoatouch重新用swift写了

    可立马全转swift
    xhacker
        40
    xhacker  
       2015-08-06 23:53:22 +08:00
    @typcn: 显然不是。Swift 丧失了 ObjC 的一些动态性,因此肯定比 ObjC 快。就函数调用一点就够了。
    typcn
        41
    typcn  
       2015-08-06 23:59:12 +08:00
    @xhacker 不,如果在安全锁开启的状态下,Swift 比 OC 慢一百倍以上,亲自测试+GitHub网友测试
    xhacker
        42
    xhacker  
       2015-08-07 00:03:01 +08:00
    @typcn: 「Swift 还是像 Java 一样,低效率,高消耗,字节码虚拟机语言」这个也不对。Swift 就是直接编译到机器码的。就算现在慢也是因为编译器实现的原因,最终肯定比 ObjC 快。「安全锁」是什么?
    teriyaki
        43
    teriyaki  
       2015-08-07 00:03:55 +08:00
    @nino789pzw 写错了 是angular 这是js框架 个人认为是标准的一坨屎之一

    大公司的东西有些不一定都好

    决定swift是否能取代objectivec的就是否cocoa被swift重写

    现在各种语言除了少数(C++ scala比较难) 上手都很容易 几天几周就会了
    关键是库 要花大量时间熟悉 swift都问题是调用oc库的api不是和oc的调用100%兼容

    语言之争没什么意思

    如同react要提供api层封装

    问题是c# java objectivec都是c系列都语法

    根本不需要多余的层
    panerai
        44
    panerai  
       2015-08-07 00:05:00 +08:00
    @sinux 黑我大ruby!真的有这么慢吗?
    teriyaki
        45
    teriyaki  
       2015-08-07 00:08:37 +08:00
    @xhacker 最终快
    那最好等swift重写cocoa后

    编译语言速度排位

    c》c++》delphi》objectivec(oc是最慢的)》nodejs~java~c#(1/2c++的速度)

    swift在哪?
    能有多大的差异
    typcn
        46
    typcn  
       2015-08-07 00:36:29 +08:00
    @xhacker 你可以开启 -Ounchecked 可以让 swift 性能恢复 80% 不过内存操作,内存安全就不能保证了
    notcome
        47
    notcome  
       2015-08-07 01:37:09 +08:00 via iPhone   1
    真受不了了,Swift 关掉 check 自然跟 C 一样快。它又没有什么高开销的运行时抽象,enum 和 pattern match 的问题学术界早就解决了。

    编译到字节码这个就更扯淡了,LLVM 可以解释字节码但那个性能似乎有点……真的冲着虚拟机来的 LLVM 字节码解释器是几个月前微软倒宣布了一个。

    不过话说回来了,legacy code 反正不多,到时候整个字节码跨 iOS OS X 也不是不可能。
    pysama
        48
    pysama  
       2015-08-07 09:26:00 +08:00
    昨天听苹果工程师分享说,公司并没有用swift替代OC的想法;
    swift只是降低了开发门槛,让更多的精力聚焦于优秀的设计。
    ryanking8215
        49
    ryanking8215  
       2015-08-07 11:32:45 +08:00
    @typcn swift安全锁是什么东东?
    ren2881971
        50
    ren2881971  
       2015-08-07 13:47:37 +08:00
    刚自学obc 就让说 要成老古董了么。。
    MyEvonne
        51
    MyEvonne  
       2015-08-07 16:46:44 +08:00
    围观猫大
    likers
        52
    likers  
       2015-08-12 12:49:41 +08:00
    下个月准备试试用swift重写公司的古董应用。边学边写了
    wuyuchenshishabi
        53
    wuyuchenshishabi  
       2015-08-18 11:02:02 +08:00
    用了 swift 之后,感觉此间乐不思蜀了。再用回 OC 觉得有点笨重。不过现在国内的主流还是 OC ,大多数公司面试的时候 swift 说加分项 不是必须的。
    MarineLv
        54
    MarineLv  
       2015-09-06 11:14:07 +08:00
    @onevcat 喵大,感觉 xcode 6.4 对 swift 支持并不完善啊。 lldb 命令一用,整个 xcode 就会卡死,条件断点也没法用,不知道贵司是如何应对的?
    onevcat
        55
    onevcat  
       2015-09-06 15:06:34 +08:00
    @MarineLv 没遇到过..可能是你们的打开方式不对..
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4543 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 101ms UTC 04:05 PVG 12:05 LAX 21:05 JFK 00:05
    Do have faith in what you're doing.
    ubao 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