作为一个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笨拙的条件和循环变量的括号,但是语句体的大括号使我 ...
随机推荐
- 【CQ18阶梯赛第8场】题解
[A:HDU2032 杨辉三角]: 简单的递推,或者是基础的DP: 但是只有杨润东一个人1A,整体准确率只有8/37,具体原因不详. 经验:提交前一定要试一下比较特殊的数据或者最大的数据.其次,为了保 ...
- Java中的Cloneable接口与深拷贝、浅拷贝
Cloneable接口是一个标记接口,也就是没有任何内容,定义如下: 这里分析一下这个接口的用法,clone方法是在Object种定义的,而且是protected型的,只有实现了这个接口,才可以在该类 ...
- python接口自动化(三十八)-python操作mysql数据库(详解)
简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...
- Mybatis 未设置主键映射报错;Cause: java.sql.SQLSyntaxErrorException: Unknown column 'system_id' in 'field list'
使用MyBatis的时候,主键的字段建议绑定在Bean的属性上面, import javax.persistence.*; public class User { @Id @Column(name = ...
- Mac下怎么运行python3的py文件
我的Mac现在是10.14.6系统,默认自带的python版本是2.7.(怎么查看版本?打开终端,输入python即可看到版本号) 由于现在需要运行python3写的py文件,需要将自带的python ...
- 一个关于国密SM4的故事
一个关于国密SM4的故事 我的名字叫SM4,我还有三位兄长,分别是大哥SM1, 二哥SM2, 和三哥SM3.说起我的名字,故事要回到2006年的时候,我出生的时候并不是叫SM4的,而是叫做SMS4.只 ...
- 一个Nice的生活主题博客模板
https://www.bitcron.com/ https://api.bitcron.com/ https://chopstack.com/
- [洛谷4329/COCI2006-2007#1] Bond
Description Everyone knows of the secret agent double-oh-seven, the popular Bond (James Bond). A les ...
- 【模板】c++动态数组vector
相信大家都知道$C$++里有一个流弊的$STL$模板库.. 今天我们就要谈一谈这里面的一个容器:动态数组$vector$. $vector$实际上类似于$a[]$这个东西,也就是说它重载了$[]$运算 ...
- Codeforces Round #542(Div. 2) C.Connect
链接:https://codeforces.com/contest/1130/problem/C 题意: 给一个n*n的图,0表示地面,1表示水,给出起点和终点, 现要从起点到达终点,有一次在两个坐标 ...