我在开发第一个Swift App过程中学到的四件事

移动开发
这个夏天我的app开发项目是Instant Poetry 2,它原本是Ray还是独立iOS开发者时编写的一个应用,现在我需要用Swift和iOS 8 API将它整个重写一遍。对我来说这是一次丰富的学习体验 – 不但深入学习Swift和iOS 8的复杂细节,还思考了在未来如何更好的将这些经验传授给别人。

这个夏天我的app开发项目是Instant Poetry 2,它原本是Ray还是独立iOS开发者时编写的一个应用,现在我需要用Swift和iOS 8 API将它整个重写一遍。

对我来说这是一次丰富的学习体验 – 不但深入学习Swift和iOS 8的复杂细节,还思考了在未来如何更好的将这些经验传授给别人。

这里我就将在开发***个Swift app过程中学到的四件事,分享给大家。

4) Swift仍然在演变当中

在整个夏天,Swift语言本身有了不少变化。我开始编写app时使用的Swift版本是beta 3,而每一次Xcode版本升级都带来语法变化和Cocoa方法签名的微调。

如果你计划使用Swift开发应用,你需要花精力关注这些变化并跟上Swift演进的步伐。

不过我认为这种精力花费的值得。使用***和***的工具是很重要的,另外关注语言的演变本身也将成为很好的学习经验。苹果一直关注和倾听来自开发者对于Swift的反馈和问题报告,所以你甚至有机会参与到这个语言成型的进程当中。

3) Swift暴露出Cocoa不太好的一面

你是否期望获取一个包含多个SKProduct对象的Swift数组?抱歉,Cocoa将返回给你包含AnyObject的隐式解析可选类型的数组(implicitly unwrapped optional array)。

你是否想传递一个[NSObject: AnyObject]类型的Swift数组给对应的方法?抱歉,Cocoa真正想要的是一个NSDictionary,或者一个会导致静默失效(silently fail)的东西。

你能够感觉到Swift和Cocoa之间的紧张气氛:Swift想要做某件事,但它不得不为了适应Cocoa而做折衷。我们必须面对这样一个事实,从Swift透镜来看Cocoa并不总是漂亮的!

 

[[121547]]

这里有一个坏消息和一个好消息。

坏消息是我们正处在一个过渡当中,苹果在每次Swift/Xcode升级中所做的一部分事情,就是清理Swift-Cocoa的接口,来让它们更好的兼容。

好消息是苹果很善于过渡,你可以回想一下从PowerPC到Intel处理器的过渡、经典Mac OS到OS X的过渡等等。未来的某一天,Cocoa也将会原生的***支持Swift语言。

2) Swift和Objective-C是幸福的一对

真的,这是我之前观点的一个必然推论 – 你可能觉察到Swift某些地方挺怪异,是因为它需要在Objective-C runtime和Objective-C API下工作,所以只能做出妥协。

[[121548]]

从实际开发来看,在我的Swift app里使用Objective-C第三方类库和扩展非常简单,我只需要将它们的头文件导入到我的bridging header,它们就能正常工作了。

如果你有一个喜欢的库是用Objective-C编写的,或者已有的app,你想要在它们当中添加一两个Swift类,这不是个什么大问题。

1) Swift非常好玩

我很享受和Swift一起玩耍工作的日子。

它极富表现力。像自判断链接(optional chaining)和nil coalescing特性能让你写出更短的代码。让我最惊讶的是枚举类型给我带来的享受 – 它的确是一个双赢,让你代码更具可读性,还包括附加的好处比如类型检查和实例穷举检查。

[[121549]]

作为Objective-C和Ruby的粉丝,我觉得Swift就像集合了这两种语言优点的混血儿。如果你学过Objective-C和Cocoa,阅读起Swift代码将没有任何困难,如果你还没有开始学习,那么就从现在开始用Swift开发一个简单的应用吧!

附加感受:Extension将改变世界!

至少对于苹果的世界是这样。在iOS 8里,苹果引入了app extension,允许开发者通过app扩展实现自定义分享选项、通知、键盘以及照片。

在Instant Poetry 2里,我使用了一个Photo Extension,让用户能够直接在Photo应用里添加词句到图片上。在这iOS 8以前是不可能做到的。

应用们从此不再被局限在自己的sandbox里了,貌似新的开放的苹果将让app能够从更多的地方做更多的事情,这是多么美好的事啊。

即便是即将到来的Apple Watch,它也是iPhone屏幕的一个扩展,我等不及想知道我们到底能用Watch Kit来做些什么。

也许我下个Swift app将是和Apple Watch有关呢!~

那么未来将是什么样的?

我的预测是,Swift的一些粗糙的地方将在短时间内被反复打磨。很快,Swift开发的应用将会无处不在,并且在Github上,Swift项目将远远超过Objective-C。

不过如果你现在开始开发Swift应用的话,你将会面临一些挑战。由于Swift的快速演变,我认为Swift 1.0项目迁移到Swift 2.0需要做不少工作,虽然比起从Objective-C迁移到Swift肯定要轻松一些。

不过这也正是我们热爱科技的原因,不是吗?学习新知识、跟上潮流、使用******的语言和API,这些能让我保持兴奋。

***,如果你想看看Instant Poetry 2能做什么,你可以从App Store免费下载。

你是否已经开始你的Swift开发旅程呢?如果是的话,我想听听你的体验看法。

英文原文:http://www.raywenderlich.com/86278/four-things-learned-making-first-swift-app

责任编辑:chenqingxiang 来源: cocoachina
相关推荐

2015-08-07 10:51:00

Android App第一个

2014-03-10 10:03:32

SaaS网站网站经营

2021-03-09 15:03:03

iOS 15Android苹果

2015-08-05 09:31:42

开发六件事

2020-11-05 10:33:01

开发代码技术

2016-04-07 10:49:28

游戏开发者

2014-07-30 14:08:38

产品经理

2019-12-12 15:40:08

物联网数字健康自动化

2014-09-05 13:37:29

程序员

2012-07-12 00:22:03

创业产品

2022-05-09 15:30:55

人工智能麻省理工

2014-08-15 15:01:29

时间轴

2018-08-22 17:32:45

2015-04-09 09:53:08

CA TechnoloDevOps

2020-05-08 15:30:42

PostgreSQL数据库数据

2018-10-30 10:15:34

无服务器架构Serverlessc

2014-03-26 10:06:59

程序员软件销售

2022-10-17 10:28:05

Web 组件代码

2019-04-16 12:53:57

2019-12-31 08:00:00

DebianLinuxApple Swift
点赞
收藏

51CTO技术栈公众号