Swift3:@escaping
-
@escaping标明这个闭包是会“逃逸”,通俗点说就是这个闭包在函数执行完成之后才被调用.
-
没有逃逸的闭包的作用域是不会超过函数本身的,所以说我们不需要担心在闭包内持有self
as as? as!
as
- 从派生类转换为基类,向上转类型(upcasting)
class Animal{}
class Dog:Animal{}
let cat = Dog()
let dog = cat as Animal
- 消除二义性,数值类型转换
let num1 = 4 as Int
let num2 = 5.09 as CGFloat
as!
- 向下转型(Downcasting)时使用,由于是强制类型转换,如果转换失败会报runtime运行错误
as?的使用场合
- as?和as!操作符的转换规则是一样的,只是as?在转换失败之后会返回nil对象
.Type 与 .self
类型后面加 .Type 代表是类型的源类型。 类型后面加 .self 代表是源类型的值
例如
Int.Type 是Int类型的元类型 Int.self 是 Int类型的元类型的值,一个元类型只有一个对应的值