作为一个iOS Developer 为什么我不用Swift?
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?的更多相关文章
- swift 第一个IOS应用程序
		
swift 出来也有一阵子了,一直没有时间来研究.简单的看了看.随手写几篇文章.特此声明:本博客纯属个人学习,有不足之处,属于正常,希望多多见谅. 第一个IOS应用程序开发 一.准备工作: (1)Ma ...
 - 如何用 React Native 创建一个iOS APP?
		
诚然,React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用.在 JavaScript 中用 Reac ...
 - 设计一个 iOS 控件
		
转载自:http://blog.csdn.net/zhangao0086/article/details/45622875 代码的等级:可编译.可运行.可测试.可读.可维护.可复用 前言 一个控件从外 ...
 - iOS四种多线程(swift和oc)
		
在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 ...
 - 从安装Mac OS X虚拟机到第一个IOS程序
		
对于纯粹地抄这种行为是比较抵触的,别人已经写得挺好的东西没必要又去写一遍,但如果不写经验来看下次再做时自己又要重复百度筛选一遍,所以还是要记一记. 之前要获取IOS静态库的版本,但一直以来没有Mac没 ...
 - 为什么很多大公司继续使用 Objective-C,不用 Swift
		
为什么很多大公司继续使用 Objective-C,不用 Swift 我觉得这个问题最核心的原因就一点:历史包袱. 猿题库算是比较新兴的应用了,代码量级也是 10 万的级别.很多稍微有些年头的应用, ...
 - 一个iOS开发者对tvOS SDK的初探
		
http://www.cocoachina.com/ios/20151001/13652.html 作者:Chris Wagner原文地址:tvOS SDK: An iOS Developer’s I ...
 - iOS Swift-元组tuples(The Swift Programming Language)
		
iOS Swift-元组tuples(The Swift Programming Language) 什么是元组? 元组(tuples)是把多个值组合成一个复合值,元组内的值可以使任意类型,并不要求是 ...
 - iOS Swift-控制流(The Swift Programming Language)
		
iOS Swift-控制流(The Swift Programming Language) for-in 在Swift中for循环我们可以省略传统oc笨拙的条件和循环变量的括号,但是语句体的大括号使我 ...
 
随机推荐
- SQL查询速度
			
查询速度 https://www.cnblogs.com/ZaraNet/p/9558272.html 影响你的查询速度的原因是什么? 网速不给力,不稳定. 服务器内存不够,或者SQL 被分配的内存不 ...
 - java web项目的目录结构
 - C++ set和map的简单使用
			
C++中的STL模板库的功能可谓相当强大.今天我们来简单说一下set和map的使用方法. 1.pair 我们先来说一下pair.pair定义在头文件<utility>中,其本身相当于一个已 ...
 - 《算法概论》第八章的一些课后题目 关于NP-Complete Problem
			
8.3 STINGY SAT STINGY SAT is the following problem: given a set of clauses (each a disjunction of li ...
 - JAVA 中 synchronized 详解
			
看到一篇关于JAVA中synchronized的用法的详解,觉得不错遂转载之..... 原文地址: http://www.cnblogs.com/GnagWang/archive/2011/02/27 ...
 - ios::sync_with_stdio(false);
			
取消cin与stdin的同步,加快输入速度
 - (水题)洛谷 - P1553 - 数字反转(升级版) - 字符串格式转换
			
https://www.luogu.org/problemnew/show/P1553 忘记给整数加上前导零去除的代码了.其实不去也可以,额外的进位用一个carry另外存起来就好. #include& ...
 - hdoj1394
			
题意还告诉我们是0-n-1之间的数,那么我们每次把一个数放到后面去,求一下比他大的,还有比他小的: 比如: 1 3 6 9 0 8 5 7 4 2 逆序数num:22 3 6 9 0 8 5 7 4 ...
 - TCP Socket通信详细过程
			
下面这篇文章是参考"骏马金龙"博客中 不可不知的socket和TCP连接过程 https://www.cnblogs.com/f-ck-need-u/p/7623252.html ...
 - hdu 5409 CRB and Graph(边双联通分量)
			
题意: 给一个图一些边,保证图连通 问对于每条边,如果去除该边后使得图中一些点不连通.设这些点(u,v),要求使u尽量小,v尽量大,输出这样的(u,v).否则输出0 0. #include <b ...