1、开始

  在去年这个时候接手了一个iOS项目,项目主用Swift语言进行开发,对于部分第三方Objective C开源库则使用bridge的方式进行调用

当时项目的规模大概是不超过15个页面,功能也比较单一,复杂的逻辑还没有。

接手时,也是急切着需要更新新功能到项目去,当时一股好奇以及挑战难度的心态让我用Swift写了两个页面,解决了原有项目中的一些细节问题

毕竟UIKit还是UIKit,只是编写的语言不一样罢了,语法什么的稍微了解一下还是可以用,UI控件上的生命周期、功能用法 自己还是清楚的

2、接着

  随后项目需要新增的功能点越来越多,也只有我一个人在做开发,为了进度 我还是在工程上添加了 Objective-C文件,新功能全用Objective-C来开发

对于原有模块,能不动的就不动了,只是有些时候需要把OC的头文件引入到bridge桥,然后在swift里调用,回调。。

  坑肯定是有的,但也不至于影响功能使用。

  随着项目功能点越来越多,类文件也多起来了。在打包时也发现速度非常慢,后续再继续观察,发现每次打包时 Xcode都要把Swift的依赖库塞到Archives包里,导致每次打包完 Archives包都是上百M的,这速度慢就算了,还影响我SSD的写入寿命,基于这个理由,我花了1个星期把Swift写的模块全换成Objective-C来写,重写后打包的Archives只有32M,而且打包速度还有一定程度上的提升,出来的ipa文件也少了几M,对此结果 满意.

3、再后来

  后来也稍微开始留意Swift的动态,然而中途一个巨坑又出现了:Swift3.0的出现 被人戏称 「Swift从入门到重学」,至于里面包含什么含义,相信大家都懂的。至此 放弃Swift的研究。

4、个人开发效率分析

  对于一个一开始就学习Objective C 的开发者来说 Swift的开发效率自然没有OC高,这个因人而异,没有结论。

  从第三方服务分析(如支付、分享等SDK),当前大多数提供服务的第三方 基本均支持Swift,假设有部分没有提供Swift版本 也可以通过Bridge的形式使用,因此这个效率可以是一样的,但实际上语言之间还是有差异,假如一个只会Swift的开发者去看 第三方的Objective C方法,可能会有阅读障碍。

  从第三方开源库分析,当前较大规模的开源库 如AFNetworking请求库 都有对应的Swift版本,但大多数 开源控件还是基于Objective-C来编写的,若需要定制使用 还需要自行使用Objective-C来编码,因此效率还是OC>Swift

  还有很多....

5、性能分析

  这里片面的举个例子:http://www.splasmata.com/?p=2798

  上面的URL有Swift和Objective-C的性能对比,不管你信不信,反正我信的。也没有更多的时间去验证这个是真是假

  反正我OC开发用着爽

作为一个iOS Developer 为什么我不用Swift?的更多相关文章

  1. swift 第一个IOS应用程序

    swift 出来也有一阵子了,一直没有时间来研究.简单的看了看.随手写几篇文章.特此声明:本博客纯属个人学习,有不足之处,属于正常,希望多多见谅. 第一个IOS应用程序开发 一.准备工作: (1)Ma ...

  2. 如何用 React Native 创建一个iOS APP?

    诚然,React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用 Reac ...

  3. 设计一个 iOS 控件

    转载自:http://blog.csdn.net/zhangao0086/article/details/45622875 代码的等级:可编译.可运行.可测试.可读.可维护.可复用 前言 一个控件从外 ...

  4. iOS四种多线程(swift和oc)

    在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 ...

  5. 从安装Mac OS X虚拟机到第一个IOS程序

    对于纯粹地抄这种行为是比较抵触的,别人已经写得挺好的东西没必要又去写一遍,但如果不写经验来看下次再做时自己又要重复百度筛选一遍,所以还是要记一记. 之前要获取IOS静态库的版本,但一直以来没有Mac没 ...

  6. 为什么很多大公司继续使用 Objective-C,不用 Swift

    为什么很多大公司继续使用 Objective-C,不用 Swift   我觉得这个问题最核心的原因就一点:历史包袱. 猿题库算是比较新兴的应用了,代码量级也是 10 万的级别.很多稍微有些年头的应用, ...

  7. 一个iOS开发者对tvOS SDK的初探

    http://www.cocoachina.com/ios/20151001/13652.html 作者:Chris Wagner原文地址:tvOS SDK: An iOS Developer’s I ...

  8. iOS Swift-元组tuples(The Swift Programming Language)

    iOS Swift-元组tuples(The Swift Programming Language) 什么是元组? 元组(tuples)是把多个值组合成一个复合值,元组内的值可以使任意类型,并不要求是 ...

  9. iOS Swift-控制流(The Swift Programming Language)

    iOS Swift-控制流(The Swift Programming Language) for-in 在Swift中for循环我们可以省略传统oc笨拙的条件和循环变量的括号,但是语句体的大括号使我 ...

随机推荐

  1. POJ1228:Grandpa's Estate(给定一些点,问是否可以确定一个凸包)

    Being the only living descendant of his grandfather, Kamran the Believer inherited all of the grandp ...

  2. Spring中Bean获取IOC容器服务的方法

    Spring 依赖注入可以让所有的Bean对其IOC容器的存在是没有意识的,甚至可以将容器换成其它的.但实际开发中如果某个Bean对象要用到Spring 容器本身的功能资源,需要意识到IOC容器的存在 ...

  3. django url 规则正确,却一直匹配错误,django url匹配错误的可能原因

    首先看一下我想要匹配的规则如下 这个url之前设计的是 joke/index/ 后来需要加page参数就把'/'去掉了 然后再用 joke/index去访问页面时总显示 当我把鼠标放到对应连接时,显示 ...

  4. (水题)Codeforces - 650A - Watchmen

    http://codeforces.com/contest/650/problem/A 一开始想了很久都没有考虑到重复点的影响,解欧拉距离和曼哈顿距离相等可以得到 $x_i=x_j$ 或 $y_i=y ...

  5. 51nod1163【贪心】

    思路: 我们可以说: ①:价值大的不管时间早晚,都可以取,时间较晚的,本身就可以取,那么肯定是大的在前面取,但是在最前面那也是不对的,那么条件就是在规定的时间内,大的就是取了,因为他大,OK. ②:只 ...

  6. Java 在线反编译

    使用jd-gui反编译java提示 // INTERNAL ERROR // 的类,用在线反编译直接反编译.class http://www.showmycode.com/

  7. 洛谷 P4719 【模板】动态dp【动态dp】

    是动态dp的板子 大致思想就是用g[u]来表示不包含重链转移的dp值,然后用线段树维护重链,这样线段树的根就相当于这条重链的top的真实dp值 每次修改的时候,修改x点会影响到x到根的真实dp值,但是 ...

  8. 洛谷 P4125 [WC2012]记忆中的水杉树【扫描线+set+线段树】

    我没有找到能在bzojAC的代码--当然我也WA了--但是我在洛谷过了,那就假装过了吧 minmax线段树一开始写的只能用min更新min,max更新max,实际上是可以互相更新的-- 首先看第二问, ...

  9. spring-data-redis 使用过程中踩过的坑

    spring-data-redis简介 Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, ...

  10. Eclipse新建Maven webapp项目错误的解决方法

    新建webapp项目时出现如下错误: 解决步骤如下: 1.  右键点击项目,选择Properties,点击Java Build Path,将默认的JRE移除,点击右侧add Library,选择JRE ...