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

本文转载至 http://www.itjhwd.com/wzkfyigeswiftsjs/


译者注:本文做者Greg Heo,这是他为讲授iOS 8 App Extensions视频教程而实际使用Swift开发了一款App的经验,来看看他的心得体验。html

这个夏天个人app开发项目是Instant Poetry 2,它本来是Ray仍是独立iOS开发者时编写的一个应用,如今我须要用Swift和iOS 8 API将它整个重写一遍。swift

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

这里我就将在开发第一个Swift app过程当中学到的四件事,分享给你们。app

4) Swift仍然在演变当中工具

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

我在开发第一个Swift App过程当中学到的四件事 - 第1张  | IT江湖

 

若是你计划使用Swift开发应用,你须要花精力关注这些变化并跟上Swift演进的步伐。性能

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

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

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

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

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

 

我在开发第一个Swift App过程当中学到的四件事 - 第2张  | IT江湖

 

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

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

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

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

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

 

 

 

我在开发第一个Swift App过程当中学到的四件事 - 第3张  | IT江湖

 

 

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

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

1) Swift很是好玩

我很享受和Swift一块儿玩耍工做的日子。

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

 

 

我在开发第一个Swift App过程当中学到的四件事 - 第4张  | IT江湖

 

做为Objective-C和Ruby的粉丝,我以为Swift就像集合了这两种语言优势的混血儿。若是你学过Objective-C和Cocoa,阅读起Swift代码将没有任何困难,若是你尚未开始学习,那么就从如今开始用Swift开发一个简单的应用吧!

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

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

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

 

 

我在开发第一个Swift App过程当中学到的四件事 - 第5张  | IT江湖

 

应用们今后再也不被局限在本身的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,这些能让我保持兴奋。

 

 

我在开发第一个Swift App过程当中学到的四件事 - 第6张  | IT江湖

 

最后,若是你想看看Instant Poetry 2能作什么,你能够从App Store免费下载。

你是否已经开始你的Swift开发旅程呢?若是是的话,我想听听你的体验见解。

 

原文:Four Things I Learned Making My First Swift App 译文:cocoachina

 

IT江湖 swift专栏

相关文章
相关标签/搜索