swift 2特性记录

swift 团队一直在优化,让你们准备在秋天的时候,迁移到swift2作准备。ios

1、错误处理编程

异常处理,不是NSError对象和双指针。swift

可使用 throws   来指定方法来抛出一个错误。数组

调用do  try catch 多个关键字来捕获和处理错误。session

NSError对象的引用,inout app

方法会赋值给错误变量,传入一个nil到这里彻底忽略这个错误,或者传入  NSError但从不检查它。编程语言

enum  DrinkError:ErrorTypeide

{函数

case NoBeerRemainingError学习

}

func drinkWithError()throws

{

if beer.isAvailable()

{

// party!

}else{

throw DrinikError.NoBeerRemainingError

}

}

func tryToDrink()

{

do{

try drinkWithError()

}

catch{

print("could not drink beer!:[")

return

}

}

一、建立一个继承ErrorType的enum

二、使用throws关键词,标志任何函数能够抛出一个错误。

三、抛出一个错误,将会在section4中被捕获。

四、在do块中包含任何能够抛出一个错误的代码,而不是其余语言相似的try快中,而后你添加一个try关键字到函数被调用的前面,这个函数可以抛出一个错误。

绑定

在swift 1.2 失去了金字塔的厄运和可以在一行代码测试多个绑定的optionals;

if let pants = pants,frog = frog{

// good stuff here!

}

检查一些没有值的optionals   早点退出,这是swift 2提供的guard语句。

guard let pants = pants,frog = frog else{

// sorry,no frog pants here

return

}

使用guard意味着你能够执行optional binding ,若是条件失败就提供一个代码块在else运行,你能够继续执行,optiional frog 和 pants在做用域内被unwrap

使用guard指定某种你但愿获得状态而不是检查错误状况以后,使代码更加简洁。

协议扩展

面向协议的编程语言

在swift1,协议就像接口同样能够指定一些属性和方法,类,结构体,枚举会遵循它。

在swift2,你能够扩展协议给属性和方法添加默认实现,你以前已经能够在类和结构体添加新的方法到string 或 array

你能够添加这些到协议,让你更加普遍应用。

extension CustomStringConvertible{

var shoutDescription:String{

return "\(self.description.uppercaseString)!!!"

}

}

let greetings = ["Hello","Hi","Well"]

// prints Hello,Hi,Yo yo yo

print("\(greetings.description)")

// prints HELLO,HI,YO YO YO

print("\(greetings.shoutyDescription)")

协议被命名为CustomStringConvertible 大多数的Foundation对象都遵循Printable协议,有了协议扩展,能够用自定义功能来扩展系统。

相比向不少类,结构体和枚举添加少许的自定义代码,你能够编写一个通用实现,应用到不一样的数据类型。

用过map    filter 的,能够认为以方法的方式比全局函数来使用它们更好。

已经有一些新的方法添加到集合类型。

map,filter,indexOf

et numbers = [1,5,6,10,16,42,45]

// swift 1

find(filter(map(numbers,{$0*2}),{$0%3 == 0}),90)

// swift 2

numbers.map{$0*2}.filter{$0%3 == 0}.indexOf(90) //return 2

 

  • Objective-C 泛型 – Apple已经开始标注全部的Objective-C代码以便Swift类型可以获取正确类型的optional。使用Objective-C泛型也能正常工做,这样给Swift开发者更好的类型提示。若是你但愿出现一些UITouch对象或字符串数组,那就会出现你想要的而不是一些AnyObjects。
  • 重命名 语法 – println已经离开咱们一年了;如今它是普通旧的print,如今它有第二个参数的默认值设置为true来决定是否换行。do关键字主要用来错误处理,do-while循环如今是使用repeat-while。相似地,有不少协议名都改变了,例如:Printable改成CustomStringConvertible。
  • Migrator – 有不少小的语法改变,你怎样使得你代码变得最新?Swift 1-to-2 migrator会将代码变成最新的标准和改变语法。这个migrator智能到可以更新你的代码使用新的错误处理,和更新块注释到新的格式风格!
  • 开源! – 对码农有一个重大消息就是在秋天发布Swift 2的时候,Swift将会开源!这意味着不只可使用它来iOS开发,更重要的是学习它的源代码。不只如此,这将是很好的机会来深刻源代码,甚至为项目贡献代码,而后在swift编译器提交历史上留下你的名字。
  • 文章引用自以下地址:O(∩_∩)O谢谢

http://ios.jobbole.com/82099/?from=groupmessage&isappinstalled=1

 

这只是全部发布特性中的一些简单示例;想了解更多,请查看WWDC session videos和已更新的Swift Programming Language book

若是还有一些人记得在Swift第一个beta版和发布的1.0之间有不少改变,那么未来确定会有更多地特性出现。咱们团队将会持续关注全部的更新,深刻挖掘使人兴奋的改变,因此请密切留意教程,书籍和视频。

相关文章
相关标签/搜索