Swift 3.0都有些怎样的改变
系统保留关键字变化
以前
__FUNCTION, __LINE, Selector
现在
#function, #line, #selector
系统API简化,去NS前缀,GCD简化
以前
dispatch_async(dispatch_get_main_queue(), ^{
//your code
});
现在
DispatchQueue.global().async {
//your code
}
第一个参数必须存在
3.0 以前第一个参数的label是可以省略的,现在如果想外部调用的时候不加label,需要在参数前面加上下划线
func reverseString(s:String) -> String {}
现在
func reverseString(_ s:String) -> String {}
inout参数位置的改变
以前
func move(inout nums: [Int]) {}
现在
func move(nums: inout [Int]) {}
增加关键字open ,fileprivate
扩展方法定义前置
如果在扩展里面定义方法,需要定义到类的声明之前,不然会报错declaration is only valid at file scope.
closure
closure默认为非逃逸的,如果closure变成逃逸的,需要显示的声明为@escapeing,不然会编译错误。
Comments