Swift各种初见的关键字

1、常见关键字

let:定义常量
var:定义变量

typealias:重命名已存在的类型,使代码更加清晰,但不适用于类型不确定的泛型。typealias和泛型接口
extension:扩展,向一个已有的类、结构体或枚举类型添加新功能。功能类似OC的category,但没有具体名字。
associatedtype:协议中定义泛型。关于associatedtype的使用说明

optional:定义时只需在类型后面加上问号(?)就行了。关于optional的使用
internal:默认级访问控制,可不写(open > public > interal > fileprivate > private)。访问控制

inout:一般参数仅是在函数内可以改变的,函数执行完后变量就会被销毁,不会有机会改变函数以外的变量。关于inout的使用
lazy:延时加载,可修饰变量和方法。关于lazy的使用说明

2、@noescape和@escaping

@noescape:用来标记一个闭包。解决闭包“保留环”问题
@escaping:逃逸闭包。swift3.0下闭包语法汇总

3、designated和convenience

designated:构造函数init前的默认关键字,不加修饰的 init 方法都需要在方法中保证所有非 Optional 的实例变量被赋值初始化,而在子类中也强制 (显式或者隐式地) 调用 super 版本的 designated 初始化。
convenience:必须调用同一个类中的 designated 初始化完成设置,只作为补充和提供使用上的方便。convenience 修饰的构造方法是不能被子类重写或者是从子类中以 super 的方式被调用的。
关于designated和convenience的使用

4、override和required

override:重写父类的方法。
required:只能用于修饰类初始化方法。
关于override和required的使用

5、weak和unowned

weak:修饰的属性可为可选类型,用来防止循环引用。
unowned:修饰的属性不能为可选类型,用来防止循环引用,必须在init中初始化。
关于weak和unowned的用法

6、willSet与didSet

willSet:在新的值被设置之前调用,默认参数名称为newValue
didSet:在新的值被设置之后立即调用,默认参数名称为oldValue
关于willSet与didSet的用法

7、mutating和nonmutating

mutating:修饰方法是为了能在该方法中修改 struct 或是 enum 的变量。mutating关键字的使用
nonmutating

8、自定义运算符operator

operator:自定义运算符。
prefix:前置运算符
infix:中间运算符
postfix:后置运算符

associativity:综合性。取值范围:leftrightnone
precedence:优先级。取值范围:0~255。

// 前置:返回2的n次方
prefix operator  ^ {}
prefix func ^ (var vector: Double) -> Double {
    return pow(2, vector)
}
println(^5)  // 32.0

// 后置:返回2次方
postfix operator  ^ {}
postfix func ^ (var vector: Int) -> Int {
    return vector * vector
}
println(5^)  // 25

//中间:计算N的M次方,左结合,优先级为255
infix operator ^^ {associativity left precedence 255}
func ^^(left: Double, right: Double) -> Double {
    return pow(left, right)
}
println(2 ^^ 10 - 2 ^^ 3)  // 1024 - 8 = 1016

自定义运算符实例

9、其他

dynamic:一般用不上。dynamic详解。
subscript:自定义下标。

你可能感兴趣的:(Swift各种初见的关键字)