Swift 1.2版本新特性

简介: 随着Xcode6.3正式版本的推出,Swift语言也正式进入1.2版本,那么1.2版本有什么新特性呢?来快速了解一下吧。

随着Xcode6.3正式版本的推出,Swift语言也正式进入1.2版本,那么1.2版本有什么新特性呢?来快速了解一下吧。

1.速度的提升

速度的提升首先体现在对工程中增量的单独编译,这使得我们在改动较大的工程的时候,运行速度会得到大幅度的提升。

其次体现在Swift自己的运行库的运行时性的增强。Swift刚推出时自己的库运行速度不够快,现在在这个方面做了大幅度的提升。

2.可选绑定的简化

之前在Swift和OC的对比中我们讲过了Swift中的可选绑定,也就是常用的if - let结构,来看看之前的例子:

if let stock = findStockCode("Apple") {
    if let sharePrice = stock.price {
        let totalCost = sharePrice * 100
        println(totalCost)
    }
}

如果有多个可选绑定,那么需要纵深地来写,也就说我们在不停地嵌套这些if let,看起来很复杂,括号过多容易出错,在1.2版本中优化了这个结构,我们可以把所有的if let写在一句中:

if let stock =findStockCode("Apple"),let sharePrice = stock.price{
let totalCost = sharePrice * 100
println(totalCost)
}

我们只需要写第一句判断语句if,之后的let语句可以用,分隔并排来写,这样只需要一对大括号{},语法简洁了不少。

3. as用法的改动

如果你之前在1.1版本编过工程,那么当1.2版本更新的时候工程里的报错可能会吓你一跳,别担心,大部分都是由于as用法的改动。

请看图:


如果我们有一个myTableView1它是一个UIView把它转成NSObject的话是向上转型,那么我们使用as就可以。

如果要向下转型,我们确定它是UITableView类型的,那么我们可以使用as!来转型,这叫强制下转。如果我不确信myTableView1是什么类型的,它可能是一个UITableview也可能是一个UIButton,那么向下转型时我需要使用as?,这叫安全下转。


4.Swift原生集合类型Set

接触过数学的话我们肯定对集合不会陌生,集合和数组的区别是数组中可以有重复的元素,但是集合中不会有重复的元素。之前在Swift中是没有Set这个数据类型的,我们只能使用OC中的NSSet,现在Swift中有原生的集合类型Set了。


5.常量的延迟加载

我们知道Swift中要求类初始化时类的所有属性必须被初始化,变量可以有懒加载,现在常量也有了延迟加载机制:

let 饿:Bool
if 吃过饭了
{
饿 = false
} else {
饿 = true
}

我们定义了一个常量但是没有赋值,我们可以在使用它之前给它赋值。

6.与OC桥接的变化

Swift与OC的互动和桥接还在衍生中。

首先是可选类型的互通,在OC中有一个关键字叫nonnull(非空),比如OC中的nonnull NSString在Swift中就是String,同理OC中的nullable NSString在Swift中就是String?

第三种是未确定是否为空,null_unspecified NSString对应Swift中的String!

以上是可选类型的互通,其次是桥接的变动,现在Swift中不再接受NSString和String的互通了,我们在Swift中逐渐淘汰NSString的使用。

7.迁移助手

那么在Swift版本升级之后如何快速升级我们自己的程序呢?Xcode中新增了迁移助手,可以帮助我们升级我们程序的版本:

具体位置如图:


大家可以试一下。

目录
相关文章
|
Swift 图形学 数据安全/隐私保护
Swift 各版本
介绍Swift各个历史版本
310 0
Swift 各版本
|
Swift
swift微博第14天(新特性的引导图)
swift微博第14天(新特性的引导图)
180 0
swift微博第14天(新特性的引导图)
|
Swift 数据安全/隐私保护
[译] Swift 5.0 新特性
Swift 5.0 是 Swift 的下一个主要的 release,随之而来的是 ABI 的稳定性,同时还实现了几个关键的新功能,包括 raw string,未来的枚举 case,Result 类型,检查整数倍数等等。
1584 0
|
机器学习/深度学习 JavaScript Swift
聊聊架构、内存拷贝、Swift 新特性: iOS 面试场景复习题 ,20190720
聊聊架构、内存拷贝、Swift 新特性: iOS 面试场景复习题 ,20190720
1573 0
|
iOS开发
iOS中 切圆角,任意几个角(带边框,不带边框)__OC和Swift版本 韩俊强的博客
需求: 1.日常我们在切控件圆角时会遇到想切任意圆角? 2.切过圆角带边框和不带边框的选择? 那么今天我们就用Objective-C和Swift都给它实现了: OC代码: UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 70)]; myLabel.
2979 0
|
测试技术 API Go
iOS - Swift Swift 语言新特性
1、Swift 2.0 带来哪些新变化 常规变化: 1、OS X 10.11、iOS 9 和 watchOS 2 SDK 采纳了一些 Objective-C 的特性用来提高 Swift 的编程体验, 如可空性、类型化集合和一些别的特性。
1373 0