继上次重构代码删了 6 万多行,最近又把我们的项目用 Swift 重写了一遍,也收获不少经验,希望分享给大家
原文发表在我的博客:一份非常详尽的 Objective-C 到 Swift 的迁移指南
English version: A guidebook for migrating from Objective-C to Swift
因为 Swift 没有系统学过,之前没有做过商业项目,这几天参考了:《 Swift Apprentice 》《 Swift 必备 tips 》还有一些博客,主要参考了错误处理部分。
所以虽然改写成 Pure Swift 了,应该还是有不少缺陷,很多新特性没使用到,还请大家多多指正!
1
wohenyingyu03 2018-06-04 10:00:54 +08:00
然而好多项目还停留在 c/c++😂
|
2
pupboss OP |
3
v2xeuser 2018-06-04 12:05:01 +08:00
4.0 的 swift 吗
|
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 OP 两个 extension 是可以在一个项目里的啊...只要方法名不冲突
所以如果是源码方式引入第三方库,如果方法名冲突,要不就手动改改方法名?如果是用 Module 方式引入,swift 的命名空间还是会起作用的 可以参考这篇文章: http://swifter.tips/namespace/ @maxxfire |
9
ech0x 2018-06-04 17:21:06 +08:00 via iPhone
然后每年 wwdc 之后就有理由重构了😂
|
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 OP @renshaojuncool 可以可以,5.0 出来之后我来这里 append 一下要注意的坑
@0xcb 有强迫症的路过。。。只想用纯 swift @bloodspasm 写过 C++ 和 OC 的混编,感觉效率还行,我们是处理音频的,对性能要求也算是不低了 |