iOS-Swift相比Objective-C有哪些优缺点
Swift,是苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。它是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。
今天,根据目前 Swift 的使用情况,我们来总结下它与 Objective-C 相比的优缺点。

优点:
1、 简洁的语法:
我们不得不承认的是swift语言比OC精简,整个项目中丢掉了头文件,以及头文件的引入。
2、报错精准:
报错的时候直接显示报错行。
3、定义变量简单:
定义变量不用区分整型,浮点型等等,变量使用var,常量使用let。
4、可视化互动效果:
开发工具带来了Xcode Playgrounds功能,该功能提供强大的互动效果,能让Swift源代码在撰写过程中实时显示出其运行结果。
5、函数式编程的支持:
Swift 语言本身提供了对函数式编程的支持;
Objc 本身是不支持的,通过引入 ReactiveCocoa 这个库才可支持函数式编程。
缺点:
1、Swift目前还没有得到全面性的推广:
很多大公司,以及一些老的项目,仍然使用OC语言进行开发。老程序员从oc转到swift是一件并不简单的事,所以当你在项目中遇到一些问题的时候,你会发现,身边能帮你解决问题的人几乎没有,网络上的资源也是很稀有的。
2、Swift暂时还不稳定:
你会发现,swift2.0,swift3.0,以及现在的swift4.0是有很大的区别的,每次升级开发工具的时候,看到几十甚至上百个错误提示,难免急出一身冷汗。
3、第三方库的支持不够多:
我们在做一个项目时,通常会用到一些第三方,但是现在swift版本的第三方是非常稀有的,以至于在开发的过程中,不得不导入OC版本的第三方,这个时候便成了混合开发,有经验的朋友会发现,有的兼容性并不是那么好,而且在混合开发的时候,项目会变大,运行速度真的是太慢了。
4、App体积变大:
使用 Swift 后, App 体积大概增加 5-8 M 左右,对体积大小敏感的慎用。(体积变大的原因是因为 Swift 还在变化,所以 Apple 没有在 iOS 系统里放入 Swift 的运行库,反而是每个 App 里都要包含其对应的 Swift 运行库。)
5、上线方式改变:
在上线的时候,不能使用application Loader上传包文件,会提示你丢失了swift support files,应该使用xcode直接上传。
仁者见仁智者见智,有人说Swift迟早要取代OC,有人说数年内依旧是OC的天下,至于选择哪种语言开发程序,就看你自己的选择了。(有历史包袱的大厂 MRC 都还没消除干净,上 Swift 更是遥不可及,也许等到公司倒闭都不会这样做,移植的成本极大。小公司船小好掉头,随你怎么折腾,重写也不是完全不可能。)
作者:Joh蜗牛
链接:https://www.jianshu.com/p/73df8495ad3a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
iOS-Swift相比Objective-C有哪些优缺点的更多相关文章
- Swift相比OC语言有哪些优点
Swift相比OC语言有哪些优点 1.自动做类型推断 2.可以保证类型使用安全 Swif类型说明符 --Swift增加了Tuple表示元组类型 --Swift增加了Optional表示可选类型 常量一 ...
- iOS swift的xcworkspace多项目管理(架构思想)
iOS swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...
- iOS Swift 模块练习/swift基础学习
SWIFT项目练习 SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图 +控件 1.UIImag ...
- ios swift 实现饼状图进度条,swift环形进度条
ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...
- Building gRPC Client iOS Swift Note Taking App
gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...
- iOS Swift WisdomScanKit图片浏览器功能SDK
iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介 WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...
- iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK
iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言: 今天给大家 ...
- iOS Swift WisdomHUD 提示界面框架
iOS Swift WisdomHUD 提示界面框架 Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...
- iOS Swift WisdomKeyboardKing 键盘智能管家SDK
iOS Swift WisdomKeyboardKing 键盘智能管家SDK [1]前言: 今天给大家推荐个好用的开源框架:WisdomKeyboardKing,方面iOS日常开发,优点和功能请 ...
- iOS swift项目IM实现,从长连接到数据流解析分析之Socket
iOS swift项目IM实现,从长连接到底层数据解析分析之Socket 一:项目简介: 去年开始接手了一个国企移动项目,项目的需求是实现IM即时通讯功能. * 一期版本功能包括了: ...
随机推荐
- jdbc代码
1.jdbcutiul的代码, package gz.itcast.util; import java.io.InputStream; import java.sql.Connection; impo ...
- UI 界面:技术决定一切
转自:http://www.cnblogs.com/NEOCSL/archive/2012/12/10/2811153.html 在我看来,肖恩帕克不仅仅是一位技术天才和远见卓识的移动互联网领域先锋. ...
- 三 Flask+ MySQL 数据库操作
一: __init__.py作用: __init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件.通常__init__.py ...
- 用于获取或设置Web.config/*.exe.config中节点数据的辅助类
1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类 /**//// <summary> /// 用于获取或设置Web.config/*.exe.confi ...
- 如何编写新的PCL类
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=244 把代码转换成符合PCL思路和句法的代码,对于第一次接触该基础架构的人会 ...
- c#正则表达式替换
替换规则: 替换中包含原部分逐句,可以用分组的方式来替换,用?<组名>来标记需要记录的数据,在替换的时候使用 ${组名} 或者 <组名> 来加载这部分数据. 例如: 替换:&l ...
- 要把target下面虚拟路径的项目文件…
源码进不去,要检查target下面的项目文件,要删除掉. 版权声明:本文为博主原创文章,未经博主允许不得转载.
- react中事件的使用
import React from 'react' class Home extends React.Component{ constructor(props){ super(props) this. ...
- 汇总:unity中弹道计算和击中移动目标计算方法
http://download.jikexueyuan.com/detail/id/432.html 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺复杂的 ...
- VM Fusion配置静态IP和物理机通讯
Vm虚拟机在WIndow系统上和物理机进行通讯很方便,但是在Mac上简直跟吃了屎一样难用的要死,物理机断了网以后还不能和虚拟机通讯, 如果在windows上做开发,也是简直和吃了屎一样,难用的要屎,这 ...