Swift 关键字
2017-06-20 本文已影响17人
swagon
以下是自己学习Swift 的一些记录,便于以后查找翻阅
一些关键字
-
@escaping
(es=ex向外,cape=海角)修饰闭包的关键字,这个关键字理解为逃跑,意思是这个闭包可以超出这个函数体的作用范围。 -
@convention
字面意思是约定,在swift中调用Objectvie-C或者C的时候,要用这个关键字,才能把swift中的函数变量传入Objectvie-C或者C中。 - ?变量后面跟这个可以认为是可选值,这种情况实际使用的时候,要用一个常量去接受这个值,然后判断是否为空。
- !确认这个值是有的,程序员自己断定,但是实际有可能是没有的。
- :后面跟着类型,->跟返回类型。
- 泛型Type<T> T相当于占位符,传入参数不会出现问题。
- as转换,as!强制转换,as?转换不成功返回nil
- (属性访问控制)private是类私有或则结构体私有(当前作用域),fileprivate是文件内私有,internal是target内访问,public表示公开,target可以继承(重写),但是在模块外只可以访问,open表示开放,在target外可以访问,也可以继承(重写)。
- final 保持原样
- typealias 别名。
- guard( 守卫)保证是你想要的条件,不想要的就返回。
guard let request = request else {
return
} - willset,didset用来监控oldValue,newValue,实现属性检测。
- extension类扩展,可以扩展属性和方法
- @available(iOS 9.0, macOS 10.11, tvOS 9.0, *)
- 有没有变异方法决定数组的可变课不可变
- 写时复制,对于真正用到,才分配内存
var diameter: Double {
get { return radius * 2}
set { radius = newValue / 2}
}
radius // 10
diameter // 20
diameter = 1000
radius // 500
var colorToUse = userChosenColor ?? defaultColor
var radius: Double = 10 {
willSet { print("将要赋值中") }
didSet { diameter =radius * 2}
}
}
radius = 10 // 将要赋值中
diameter // 20.0 ```
- 便利初始化
class Human { var finger: Int var toe: Int init(finger: Int, toe: Int) { self.finger = finger self.toe = toe } convenience init() { self.init(finger: 10, toe: 10) // 调用主初始化方法 } } var daDi = Human() daDi.finger // 10 daDi.toe // 10