HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

从 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:471972
用户头像

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

关注

评论

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

实战|Android后台启动Activity实践之路续,2021年Android者未来的出路在哪里

android 程序员 移动开发

客2消,客1消,客0消,android热修复视频

android 程序员 移动开发

开发8年程序员:你是不是疯了,为什么字节跳动的Offer都不要了

android 程序员 移动开发

开发部署提速8倍!这款IDE插件了解一下?,211本硕如何通过字节跳动、百度、美团Android面试

android 程序员 移动开发

安卓11来了,快!扶我起来,音视频开发书籍

android 程序员 移动开发

工作两年裸辞备战一个多月收割offer,一二线互联网公司Android面试题汇总

android 程序员 移动开发

带了一个实习生程序员,这波操作搞得我人都傻了,android开发者网站

android 程序员 移动开发

带你高效入门 Flutter,安卓开发入门书籍推荐

android 程序员 移动开发

干了5年Android开发,突然感觉自己啥也不会,啥也不想干

android 程序员 移动开发

年后想跳槽涨薪?你想要的面试题全在这里,kotlinmap初始化

android 程序员 移动开发

开发八年的程序员,在字节跳动5年,30岁的我被刚升职后辈一句话惊醒

android 程序员 移动开发

开发者须知:女性玩家和手机游戏注意事项,安卓开发中遇到最难的问题

android 程序员 移动开发

字节跳动:必面题说一下Android消息机制,重要概念一网打尽

android 程序员 移动开发

当 Android 的 Compat 库不能拯救你的时候,覆盖所有面试知识点

android 程序员 移动开发

安卓-如何用正确的姿势监听Android屏幕旋转,flutter修改textfield内容

android 程序员 移动开发

官方推荐Flow,LiveData:那我走,绝对干货

android 程序员 移动开发

小企业呆了3年多,人都呆废了!准备跳槽字节跳动,2021年不想被公司优化

android 程序员 移动开发

工作都是公司的,技术才是自己的,【2021Android最新学习路线

android 程序员 移动开发

开源爆款,阿里P7Android技术笔记,图文并茂,Android经典面试题详解

android 程序员 移动开发

当事人:现在就是非常后悔,开工那天没去上班,Flutter中网络图片加载和缓存源码分析

android 程序员 移动开发

建造者模式,android原生开发技术

android 程序员 移动开发

开发者须知:女性玩家和手机游戏注意事项(1),flutter面试题2021

android 程序员 移动开发

当中国诗词大会邂逅了Flutter,从此我的眼里只有你!,附架构师必备技术详解

android 程序员 移动开发

学习Flutter,你需要了解的Dart 编码规范,sharedpreferences用法

android 程序员 移动开发

安卓指纹对称加密及登录功能的实现,android面试简历

android 程序员 移动开发

实践App内存优化:如何有序地做内存分析与优化,flutter免费视频教程

android 程序员 移动开发

年底被裁,程序员 2020 年的出路在哪里?,Android开发实用必备的几款插件

android 程序员 移动开发

安卓屏幕完美适配方案,组件化与插件化的差别在哪里

android 程序员 移动开发

巧用Android网络通信技术,在网络上直接传输对象 (1),Android工程师面试题

android 程序员 移动开发

带着问题重学Android事件分发,移动端内嵌h5页面

android 程序员 移动开发

当中国诗词大会邂逅了Flutter,从此我的眼里只有你!(1)

android 程序员 移动开发

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