作为一个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笨拙的条件和循环变量的括号,但是语句体的大括号使我 ...
随机推荐
- SPOJ:Free tour II (树分治+启发式合并)
After the success of 2nd anniversary (take a look at problem FTOUR for more details), this 3rd year, ...
- 【前端】CentOS 7 系列教程之二: 安装 git 最新版
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/linux_2.html 这一篇我们来安装git高版本. 卸载yum安装的旧版本 yum remove git 安装 ...
- python-----windows下安装face_recognition库
如果直接在cmd命令界面 输入:pip install face_recognition 如下图所示: 如果第一次就会出现一系列的问题,解决此问题就安装如下步骤: 一.如果你本机没有安装vistual ...
- 学习记录:《高性能javascript》【持续更新】
在看这本书的时候,遇到不懂得地方我一般都会百度一下.这里记录一下我在这本书里捡到的杂碎知识: 1.arrayObject.shift() 2.concat() 3.绑定监听的事件的方法(兼容IE,Fi ...
- poj1651【区间DP·基础】
题意: 给你一串数字,头尾不能动,每次取出一个数字,这个数字贡献=该数字与左右相邻数字的乘积,求一个最小值. 思路: 用dp[s][t]去代表s到t的最小值,包括a[s]和a[t],然后从区间为3开始 ...
- codeforces 611C
题意: 给你一个矩阵,矩阵里有" . "和" # "," . "表示空的," # "表示禁止的. 多米诺骨牌将占据正好有 ...
- CodeForces 615C
题意: 给定两个字符串s1,s2利用s1去构造s2,s1有无限个,可以翻转,你最少要用几个s1才能构造s2.输出每一次使用的s1的有效区间. 伪思路: 据说是暴力就能过的题目.然而自己就是暴力差,模拟 ...
- Ecliplse 指定JRE
http://blog.csdn.net/hongweigg/article/details/9987649 在Eclipse启动的过程中,它会去找系统环境变量设置的JRE_HOME或JDK_HOME ...
- Caffe实战二(手写体识别例程:CPU、GPU、cuDNN速度对比)
上一篇文章成功在CPU模式下编译了Caffe,接下来需要运行一个例程来直观的了解Caffe的作用.(参考:<深度学习 21天实战Caffe>第6天 运行手写体数字识别例程) 编译步骤: C ...
- laravel之Storage
学习laravel一段时间了,从最开始文件保存到本地直到oss都使用原生或接口.今天偶尔看到了Storage.正好项目中有用到就在项目上使用了. 1.下载安装库 composer require ja ...