写点什么

从 SlideShare 的开发看 Swift 语言

  • 2015-06-04
  • 本文字数:1809 字

    阅读完需:约 6 分钟

作为苹果公司推出的 iOS 和 OS X 应用程序编写语言, Swift 已经走过了一年的路程。因其安全的编程模式以及一些新独特的功能,Swift 语言受到了苹果应用开发人员的关注。但是,究竟这门新的编程语言使用感受如何呢?在苹果全球开发者大会(WWDC 2015)召开之前, SlideShare 移动应用的软件开发工程师 Kyle Sherman 分享了自己的一些心得体会

在 Swift 发布以后,SlideShare 团队在第一时间就开始研究这门新的语言,并在 4 个月后发布了 SlideShare 的 1.0.0 版本。当时,这是苹果商店中少数几个使用 Swift 开发的软件之一。目前,SlideShare 已经历经 11 次升级,到了 1.6 版本。首先,Kyle 说明了 SlideShare 团队使用 Swift 的原因。简单而言,使用 Swift 是因为其与 Objective-C 之间良好的互操作性、独特的语法特性以及安全的编程模式。尤其是良好的互操作性保证了使用由 Objective-C 编写的 LinkedIn 框架以及一些开源的第三方源代码的便捷性。

此外,Swift 与 Ruby 或者 Python 这样的脚本语言语法类似,保证了 SlideShare 团队可以迅速上手。而且,作为一个升级如此频繁的软件的开发人员,kyle 表示 Swift 语言的迅速变化完全不是问题。因此, SlideShare 的工程经理 Francisco Meza 表示使用 Swift 带来了诸多好处。除了自定义的一个子类、一些开源的库、LinkdedIn 内部的开发库以及一个内部的 Core Data 接口等,SlideShare 绝大部分代码都采用了 Swift 进行编写。

接下来,Kyle 详细讲述了 Swift 的诸多优点。在与 Objective-C 的互操作性方面,Swift 用户在桥接的位置添加一个头文件就可满足大部分情况的需求。只是在使用 NSDictionary 以及 C 或者 Objective-C 创建的枚举时,用户需要特别注意。至于 Swift 的语法与特性方面。相比于 Objective-C 或者 C++,Swift 去掉了一些不方便的语法约束。例如,在 Swift 中存在一个与 C/Objective-C 中的 block 功能很像的概念——closure。但是,closure 可以省略调用函数时的类型声明以及 return 的书写。这样,代码在保证易读的同时将会更加灵活和自然。

另外,Swift 中的泛型代码可以让开发人员定义适用于任何类型的、灵活且可重用的函数和类型。目前,许多 Swift 标准库都采用泛型代码来构建。最后,作为 Swift 的一个重要特性,运算符重载允许用户对现有的作用在特定的结构体和类上的操作符功能进行修改。虽然 SlideShare 中还并没有用到运算符重载,但 Kyle 表示早在使用 Objective-C 的时候,他就有使用该特性的需求。

Swift 在安全方面所做的加强体现在以下几个方面。

  1. Swift 的可选类型会进行编译检查(如 nil 检测等),防止一些常见的运行时错误。
  2. Swift 的条件语句中循环 / 判断条件不需要括号,但循环 / 判断体(body)必需括号。这一特性可以有效的减少条件语句中因为语句所属层次错误引起的 bug。
  3. Swift 初始化包括了很多过程。其中,两段式构造过程的使用让构造过程更安全,同时在整个类层级结构中给予了每个类完全的灵活性。而且,Swift 编译器会执行四种有效的安全检查,以确保两段式构造过程能顺利完成。
  4. Switch 语句中每一个可能的值都必须要有一个 case 分支与之对应。而且,当匹配的 case 分支中的代码执行完毕后,程序会直接终止 switch 语句。
  5. Swift 不支持隐式类型转换(Implicitly casting)。强制类型转换使用 is 和 as 操作符实现。在 as 操作符后加一个“?”可以有效避免 nil 引起的程序崩溃。
  6. Swift 中支持 public、private、internal 以及 final 等关键字,可以控制访问方法或函数的权限。

当然,除了这些优点,SlideShare 团队也发现了 Swift 的一些缺点。这包括从单行表达式闭包中隐式返回结果可能会引起编译错误、类中的函数无法返回该类型的数据和函数 / 方法中的参数命名不清晰等。而且,Swift 各个版本中也存在一些问题,诸如编译时间较长且受 CPU 影响明显、当 SourceKit 崩溃时语法高亮也会失效、实时语法检查有一定的延迟、 Xcode 升级时代码也要相应的更新、代码莫名的无法编译或引起 IDE/ 计算机崩溃。

不过,随着 Swift 版本的升级,这些问题大部分都得到了一定程度的改善。最重要的是,Kyle 他们在 SlideShare 开发过程中没有遇到 Swift 语言本身引起的问题。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-04 09:472033
用户头像

发布了 268 篇内容, 共 124.0 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

左耳听风-我的三观「读书打卡 day 01」

Java 工程师蔡姬

程序员 读书 读书感悟 左耳朵耗子

超自动化助力企业财务转型升级

智达方通

超自动化 企业财务转型

TikTok直播专线的优势及应用价值

Ogcloud

直播 直播优化 TikTok

软件测试开发/全日制/测试管理丨软件测试流程

测试人

软件测试 测试开发

Fig Player - play mp4 mkv mp3 苹果电脑媒体播放器

南屿

mac视频播放器 苹果软件下载 Fig Player破解下载 Fig Player Mac版

草料荣获第五届中国工业互联网大赛新锐组二等奖

草料二维码

二维码 草料二维码

强大的原型设计:Kite Compositor最新激活版

胖墩儿不胖y

Mac软件 原型设计工具 Mac动画软件

苹果电脑YouTube客户端下载:YouTube for mac激活版v1.22(56)中文版安装教程

南屿

YouTube客户端 苹果mac软件 Clicker for YouTube

【最新中文版激活序列号】Macs Fan Control Pro 苹果电脑掌控风扇必备软件

南屿

Macs Fan Control Pro下载 Macs Fan Control Pro破解 Mac 电脑风扇速度

2024年,苟住求活,才是长期主义

老张

第二曲线 职场发展 互联网裁员

Axure RP 8 中文激活授权码 Axure RP 8 完整安装教程 Mac/win

南屿

原型设计 Axure RP 8授权码 Axure RP 8下载 Axure RP 8汉化包

【年后跳槽必看篇-非广告】Spring Bean的生命周期

派大星

spring 跳槽季 Java 面试题

3D建模设计 Vectorworks 2022 SP5激活版 for Mac 下载安装教程

南屿

3D建模软件 Vectorworks 2022下载 破解软件 Vectorworks 2022注册码

快麦ERP退货借助APPlink快速同步CRM

RestCloud

零代码 CRM ERP APPlink

StarRocks Awards 2023 年度贡献人物

StarRocks

数据库 数据分析 开源社区 StarRocks

行云部署成长之路--慢SQL优化之旅 | 京东云技术团队

京东科技开发者

DNA序列分析软件 SnapGene 5 v5.3.1中文激活版 下载安装

南屿

SnapGene 5破解版 SnapGene 5下载 分子生物学软件 DNA序列

轻松完成图片转换矢量图,推荐Vector Magic for Mac破解版

南屿

mac软件下载 Vector Magic破解版 矢量图片转换工具

Rhinoceros 6 for Mac(犀牛6) 6.31.20315完美激活版

mac

苹果mac Windows软件 Rhinoceros 3D设计软件 犀牛

有关SCADA系统的所有信息:什么是SCADA?

2D3D前端可视化开发

物联网 组态软件 工业自动化 SCADA HMI

软件开发

Geek_8da502

首个云原生、分布式、全栈国产化银行核心业务系统投产上线丨TiDB × 杭州银行

编程猫

Emby for Mac:多媒体影音库管理工具 兼容M1

南屿

苹果软件下载 Mac破解软件 Emby for Mac 多媒体影音库管理工具

One Switch mac版 菜单栏一键控制神器 支持M/Intel

南屿

mac效率工具 One Switch for Mac 菜单栏一键开关控制神器 One Switch破解

深入理解TF-IDF、BM25算法与BM25变种:揭秘信息检索的核心原理与应用

汀丶人工智能

nlp 搜索系统 BM25算法 关键词检索

F5:伴随生成式AI的发展,2024年将出现十大网络安全风险威胁

科技热闻

如何用 Python 实现一个 “系统声音” 的实时律动挂件

北桥苏

Python pyaudio 系统声音

苹果Mac自用软件推荐:Unite for mac 将网站转化为应用程序 支持M1/M2/Intel

南屿

Unite for Mac Unite破解版 将网站转化为应用程序 Mac软件资源站

从SlideShare的开发看Swift语言_移动_张天雷_InfoQ精选文章