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,不然会编译错误。

Updated:

Comments