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

一份非常详尽的 Objective-C 到 Swift 的迁移指南

  •  
  •   pupboss · 2018-06-04 08:49:34 +08:00 · 1881 次点击
    这是一个创建于 535 天前的主题,其中的信息可能已经有所发展或是发生改变。

    继上次重构代码删了 6 万多行,最近又把我们的项目用 Swift 重写了一遍,也收获不少经验,希望分享给大家

    原文发表在我的博客:一份非常详尽的 Objective-C 到 Swift 的迁移指南

    English version: A guidebook for migrating from Objective-C to Swift

    因为 Swift 没有系统学过,之前没有做过商业项目,这几天参考了:《 Swift Apprentice 》《 Swift 必备 tips 》还有一些博客,主要参考了错误处理部分。

    所以虽然改写成 Pure Swift 了,应该还是有不少缺陷,很多新特性没使用到,还请大家多多指正!

    14 回复  |  直到 2018-06-05 13:43:22 +08:00
        1
    wohenyingyu03   2018-06-04 10:00:54 +08:00
    然而好多项目还停留在 c/c++😂
        2
    pupboss   2018-06-04 10:24:33 +08:00
    @wohenyingyu03 😂对,不过有些 c++ 项目迁移起来也不容易

    收藏比回复多系列,哈哈
        3
    v2xeuser   2018-06-04 12:05:01 +08:00
    4.0 的 swift 吗
        4
    pupboss   2018-06-04 12:56:47 +08:00
    @v2xeuser 对的,环境是 Xcode9 Swift 4.0/4.1
        5
    MikeV2EX   2018-06-04 14:06:56 +08:00
    战略性 mark
        6
    maxxfire   2018-06-04 14:08:45 +08:00
    @pupboss 想请教个 swift 问题,遇到这样一个问题:
    比如 NSString 有 2 个不同的 extentsion 扩展(特别是在引入第三库时,经常出现不同的库对 NSString 都做了扩展操作),那要如何才能引入具体某个呢,或者如何避免重复定义,导致编译出错?
    感觉 swift 的命名空间在这方面解决不了什么问题,没什么用。
        7
    pupboss   2018-06-04 16:38:06 +08:00
    两个 extension 是可以在一个项目里的啊...只要方法名不冲突

    所以如果是源码方式引入第三方库,如果方法名冲突,要不就手动改改方法名?如果是用 Module 方式引入,swift 的命名空间还是会起作用的

    可以参考这篇文章: http://swifter.tips/namespace/
    @maxxfire
        8
    pupboss   2018-06-04 16:38:30 +08:00
    @MikeV2EX 谢谢老哥捧场😁
        9
    ech0x   2018-06-04 17:21:06 +08:00 via iPhone
    然后每年 wwdc 之后就有理由重构了😂
        10
    pupboss   2018-06-04 18:14:22 +08:00 via iPhone
    @ech0x ……完蛋…… WWDC 前重构一次,今晚发布新版 Swift 又要重构了
        11
    renshaojuncool   2018-06-04 20:17:50 +08:00
    马克。等 swift5.0 出来后,重写试试
        12
    0xcb   2018-06-05 07:57:36 +08:00 via Android
    所以我选择混编😅
        13
    bloodspasm   2018-06-05 10:47:42 +08:00
    混编+1 ,有 C 写的方法 Objective-C 和 Swift 貌似在二进制操作效率都太慢
        14
    pupboss   2018-06-05 13:43:22 +08:00
    @renshaojuncool 可以可以,5.0 出来之后我来这里 append 一下要注意的坑

    @0xcb 有强迫症的路过。。。只想用纯 swift

    @bloodspasm 写过 C++ 和 OC 的混编,感觉效率还行,我们是处理音频的,对性能要求也算是不低了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   933 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 20:50 · PVG 04:50 · LAX 12:50 · JFK 15:50
    ♥ Do have faith in what you're doing.