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即时通讯功能. * 一期版本功能包括了: ...
随机推荐
- printf函数指向串口的方法
简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式),标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调 ...
- Deepin安装wxpython教程
环境: 安装报错: 解决: 1.sudo apt-get install libgtk-3-dev -y 2.sudo apt-get install freeglut3-dev libgstrea ...
- 基于keepalived的nginx高可用
#nginx,keepalived安装略过 MASTER 节点配置文件(192.168.1.11) vi /etc/keepalived/keepalived.conf global_defs { # ...
- [hdu1269]迷宫城堡(SCC)
题意:求一张图的强连通分量,若为1,则输出yes,否则输出no. 解题关键:targin算法模板题. #include<iostream> #include<cstring> ...
- [hdu2544]最短路spfa
解题关键:最短路模板一直没整理过,这里整理了一下spfa+链式前向星建图的最短路模板,以后网络赛省的打了. spfa算法的关键就是松弛操作,只有进行松弛操作,其后的点距离才可能被更新. #includ ...
- 如何编写新的PCL类
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=244 把代码转换成符合PCL思路和句法的代码,对于第一次接触该基础架构的人会 ...
- pow()函数的精度问题
妈蛋这个坑了我大半个小时都想不出个原因..后来看到pow的定义才想起,数据类型很重要啊.. 1.底数用常量,指数用整型 #include <stdio.h> #include <ma ...
- linux下libphenom的测试代码
使用说明:测试使用libphenom库的字符串追加函数,效率是strcat的60多倍.所以在进行大量的字符串累加的时候可以考虑使用libphenom库 依赖库: ck-.tar.gz cmake-. ...
- 猜socklen_t的原型
编写tcp时碰到这个类型,感觉他就是int型. 百度了一下: typedef int socklen_t typedef int ssize_t 我去/usr/include 下grep -r soc ...
- MySQL查看版本号的五种方式介绍1111111
MySQL查看版本号的五种方式介绍 1 命令行模式登录MySQL [root@localhost ~]# mysql -uroot -p Enter password: Welcome to the ...