• 请不要在回答技术问题时复制粘贴 AI 生成的内容
pupboss
V2EX  ›  程序员

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

  •  
  •   pupboss ·
    pupboss · Jun 4, 2018 · 3796 views
    This topic created in 3074 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

    14 replies  •  2018-06-05 13:43:22 +08:00
    wohenyingyu03
    wohenyingyu03
    Jun 4, 2018
    1
    然而好多项目还停留在 c/c++😂
    pupboss
    pupboss
    OP
    Jun 4, 2018
    2
    @wohenyingyu03 😂对,不过有些 c++ 项目迁移起来也不容易

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

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

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

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

    @bloodspasm 写过 C++ 和 OC 的混编,感觉效率还行,我们是处理音频的,对性能要求也算是不低了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1358 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 21:26 · PVG 05:26 · LAX 13:26 · JFK 16:26
    ♥ Do have faith in what you're doing.