GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Swift 2.0 中字符串设计的背后思想 - iOS 移动开发周报

2015 年 7 月 28 日

新闻

  1. Apple 公布第三财季公报:iPhone 的销量持续增长,在 2015 年第三财季,Apple 共售出了 4750 万部 iPhone 手机。在 Apple Watch,Mac 和 App Store 的协力下,本季度 Apple 同比完成了 33% 的利润增长,相较去年同期的增长率而言稳中有升。但是一个很明显的现象是 iPad 的销售并不如人意,这大概是因为大屏 iPhone 面世所造成的手机和 iPad mini 使用情景上有一些重叠的结果。值得一提的是,除了美国本土外,全球市场的销售利润占了 Apple 本财季 64% 的额度,其中在大中华区的利润增长率更是达到了惊人的 112%,已经成为 Apple 增长的最主要驱动力。
  2. iOS 9 和 OSX EI Capitan Public Beta 第二版发布:从去年开始 Apple 就开放了所谓的 public beta,允许一般用户使用和帮助测试最新的 beta 软件。相比于 developer beta,public beta 的测试版本更加稳定,之后也可以直接升级到正式版本。喜欢尝鲜但是又不需要为新版 OSX 系统做开发的朋友可以尝试一下。

教程

  1. 《Strings in Swift 2》:一篇来自官方的 Swift 博客,为我们讲述了新版本中 String 类型的设计思想的变化理由。对字符串的处理在各个语言中都是有很多细节需要注意的。在 Objective-C 里由于一些历史原因,NSString 其实是有很多不足的。Swift 1 中的 String可以说是真正有机会抛开原来的历史包袱,而现在借着 Swift 2 中 protocol extension 的引入,String 也有了更好的实现方式。相信通过阅读这篇文章你能对字符串有更好地理解。
  2. 《后台定位上传的代码实践》:这篇文章为我们讲述了一些在后台定位用户位置以及上传位置信息的一些实践。文章总结了和比较了几种可能的实现方式和对应的 API 使用方法,虽然这个需求在一些基于位置推荐的 app 中是挺常见的,但是其实现在还并没有非常稳定和可靠的方法来做这件事情,测试和检证也相对比较困难,希望这篇文章能够为你在实现类似功能时提供一些思路。
  3. 《Changes to the Swift standard library in 2.0 betas 2…<5》:文章总结了 Swift 2.0 从 beta 2 到 5 的所有改动。虽然在 API 层面上可能看不出来,WWDC 上也并没有提及,但是很多语言的实现细节都发生了改变。很多内部类型的命名发生了改变,如果你有心仔细研究的话,会发现 Swift 语言设计上的一些考量。另外,因为 Swift 即将开源,如果你有心想读一读 Swift 的源码的话,也应该尽快熟悉这些思想和内部的类型,应该会对理解 Swift 非常有帮助。

开源项目

  1. RazzleDazzle :如果你用过 IFTTT 的 app 的话,应该会注意到它们的 app 的初始引导页面制作非常精美。之前 IFTTT 开源过一个 Objective-C 的基于帧动画的 scroll view 的框架 JazzHands ,这次的 RazzleDazzle 是由 JazzHands 为基础使用 Swift 改写的项目。相比于 JazzHands,这个框架的接口更易于理解和使用,我们可以通过更多的行为描述而非过程描述来构建漂亮的 scroll view 动画。
  2. jot :IFTTT 最近开源的另一个质量很高的项目。使用触屏随意绘画并且使画出的曲线平滑是一件很有讲究的事情,虽然看上去不难,但是一旦你实际动手做的话就会知道其中暗藏玄机。这个框架为我们提供了一个成熟的触屏绘画和操作内容的解决方案,非常适合用来制作一些像图片标注这样的 app。
  3. ResponseDetective :app 开发中难免会与网络请求打交道,在调试 app 的网络部分时,我们往往会使用一些工具来截取发出的请求和收到的响应的内容。像是 Charles 或是 Paw 这样的 Mac app 就是这类工具的代表。而现在 ResponseDetective 采用
  4. SignalKit :一个 Swift 的 binding 框架,例如可以将 model 类型的属性绑定给 UI 元素,或者将一个按钮的点击事件绑定到一段代码上。通过这种对数据流或者事件流的监测和绑定,你可以用更为描述性的语言来书写代码,这会使代码逻辑更清晰,代码本身更简洁。框架的思想类似于 ReactiveCocoa,但是显然要轻量级得多。如果你想开始尝试一下信号驱动的响应式编程,又不太确定自己是否能够驾驭 ReactiveCocoa 的话,这个框架会是你入门的好选择。

感谢徐川对本文的审校。

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

2015 年 7 月 28 日 03:563201
用户头像

发布了 59 篇内容, 共 17.4 次阅读, 收获喜欢 8 次。

关注

评论

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

他人方寸间,山海几千重

清秋

随笔 4月日更 1 周年盛典 我和写作平台的故事

智慧公安重点人员管控系统搭建,实现重点人员动态管控

13828808769

智慧公安

区块链特色农产品溯源平台解决方案

13828808769

溯源 #区块链#

Zabbix Linux 下源码安装

耳东

zabbix 4月日更

被应用商店下架的应用,该如何下载?

彭宏豪95

效率 App 苹果 4月日更

修电脑、脱发、格子衫?程序员拒绝标签化,这才是真正的他们

华为云开发者社区

程序员 女朋友 标签 格子衫 单身狗

一直做着行业最“新”的尝试:NA(Nirvana)Chain受邀出席共为·创新大会并办展

区块链第一资讯

Spring Boot 启动时,让方法自动执行的 4 种方法!

Java小咖秀

springboot 启动方式

第一个 Go 程序

escray

go 极客时间 学习笔记 4月日更 Go100

GaussDB(for openGauss)让数据“存得下、算得快、算得准”

华为云开发者社区

GaussDB(for openGauss) 华为云数据库 数据分布方式 计算下推 数据强一致

C++系列:Visual Studio(VS)2019登录不上?

Bob

c++ 踩坑经历 编程经验 四月日更

算法思考:红包金额生成

程序员架构进阶

Java 28天写作 算法解析 4月日更 微信红包

中寰卫星导航卜钢采访:IT年轻人怎么工作、学习和生活(采访提纲)

老猿Python

采访 IT年轻人 学习、工作和生活

Python OpenCV 图像处理之直方图的应用,取经之旅第 26 天

梦想橡皮擦

Python OpenCV 4月日更

一加9pro联名哈苏了!这可能是你能买的平替哈苏

Geek_4a453c

直播 | 如何使用Ranger增强权限管理?

openLooKeng

大数据 数据分析 数据 Bigdata

喜欢回忆过去的人,没有未来

小天同学

成长 自我思考 个人感悟 突破瓶颈 4月日更

VueRouter源码解读:三大核心模块构成

梁龙先森

源码分析 vue-router 前端进阶

Linux pwd 命令

一个大红包

Linux linux命令 4月日更

面试官:Java中线程是按什么顺序执行的?

华为云开发者社区

Java 线程 执行顺序 多线程并发

分页场景慢?MySQL迷惑行为解读~

Java架构师迁哥

Github Star 11.5K项目再发版:AAAI 2021 顶会论文开源,80+多语言模型全新升级

百度大脑

飞桨

算法突击营毕业总结

韩儿

数据库存取策略对比

小舰

4月日更

新媒体时代,传统户外广告如何做出新花样

󠀛Ferry

四月日更

ES9的新特性:异步遍历Async iteration

程序那些事

JavaScript ecmascript 程序那些事 es9

【LeetCode】打家劫舍 II Java题解

HQ数字卡

算法 LeetCode 4月日更

Windows 下 搭建 Flutter 环境

U+2647

flutter 四月日更

初识GaussDB(for Cassandra)

华为云开发者社区

数据安全 GaussDB 华为云数据库 GaussDB(for Cassandra) 分布式云数据库

超详细 PowerDesigner 入门教学(项目数据库设计标准)

若尘

数据库 数据库设计

openLooKeng V1.2.0 发布

openLooKeng

大数据 数据 Bigdata

Swift 2.0 中字符串设计的背后思想 - iOS移动开发周报-InfoQ