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

今天,根据目前 Swift 的使用情况,我们来总结下它与 Objective-C 相比的优缺点。

"Swift" PK "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有哪些优缺点的更多相关文章

  1. Swift相比OC语言有哪些优点

    Swift相比OC语言有哪些优点 1.自动做类型推断 2.可以保证类型使用安全 Swif类型说明符 --Swift增加了Tuple表示元组类型 --Swift增加了Optional表示可选类型 常量一 ...

  2. iOS swift的xcworkspace多项目管理(架构思想)

    iOS  swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...

  3. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

  4. ios swift 实现饼状图进度条,swift环形进度条

    ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...

  5. Building gRPC Client iOS Swift Note Taking App

    gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...

  6. iOS Swift WisdomScanKit图片浏览器功能SDK

    iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介      WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...

  7. iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

    iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言:    今天给大家 ...

  8. iOS Swift WisdomHUD 提示界面框架

    iOS Swift WisdomHUD 提示界面框架  Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...

  9. iOS Swift WisdomKeyboardKing 键盘智能管家SDK

    iOS Swift WisdomKeyboardKing 键盘智能管家SDK [1]前言:    今天给大家推荐个好用的开源框架:WisdomKeyboardKing,方面iOS日常开发,优点和功能请 ...

  10. iOS swift项目IM实现,从长连接到数据流解析分析之Socket

    iOS  swift项目IM实现,从长连接到底层数据解析分析之Socket 一:项目简介:  去年开始接手了一个国企移动项目,项目的需求是实现IM即时通讯功能. * 一期版本功能包括了:       ...

随机推荐

  1. C#操作SQL Server中的Image类型数据

    该例子是一个对SQL Server数据类型的一个操作例子,具有写入.读取功能. 1:准备数据库 1)创建数据库 Test 2)创建表 Table_1 (分别有2个字段:id(Int).photo(Im ...

  2. Collection与Map总结

    顺序表和链表统称为线性表:顺序表一般表现为数组,如:ArrayList的实现;链表有单链表.双链表.循环链表的区分,如:LinkedArrayList由双链表+哈希表实现

  3. .Net锦囊-C#,.Net发送邮件三种方法…

    最近公司由于一个R&I项目的需要,用户要求在购买产品或出货等一些环节,需要发送邮件提醒或者说每周一让系统自动采集数据发送一封E-mail,因此我也就找来相关资料,写了一个Demo分享给大家,大 ...

  4. Inno Setup整理

    1.如何使inno setup添加快捷方式默认选中 在[Tasks]段,有 Flags:unchecked改成 Flags: checkablealone; 即可 完整代码示例: [Tasks] Na ...

  5. CSP 的有用资料

    具体请参考: http://software-security.sans.org/downloads/appsec-2014-files/building-a-content-security-pol ...

  6. ASP.NET学习笔记(二)语法

    基本的 ASP 语法规则 通常情况下,ASP 文件包含 HTML 标签,类似 HTML 文件.不过,ASP 文件也能够包含服务器端脚本,这些脚本被分隔符 <% 和 %> 包围起来. 在 A ...

  7. ue4 碰撞检测测试

    记录几条物理相关 测试条件,1使用setActorLocation移动,3使用控制器的移动 1 moveCube  2 targetCube  3 Character 两个Cube的碰撞事件 1和2的 ...

  8. Unity开发Android应用优化指南(上)

    http://forum.china.unity3d.com/thread-27037-1-2.html 如今越来越多的开发者使用Unity开发Android及iOS项目,开发过程中难免会遇到一些性能 ...

  9. datastream解析

    在EOS的eosiolib模块中有一个datasteam.hpp文件,它几乎实现了所有类型对字节流的转换,是一个非常强大的工具类,在这里对它的做一个简单的提取,也加强一下自己对它的理解.在下面的工程中 ...

  10. Centos下磁盘管理的常用命令记录(如查找大文件)

    Centos下磁盘管理的常用命令记录 查看系统磁盘空间占用,使用命令: df -h 结果: 查看磁盘inode使用情况,如果inode用完了,磁盘就没法写入新的内容了: df -i 结果: 如何查找磁 ...