Swift 3 新特性
函数和方法的第一个参数总是有标签,除非使用“_”来省掉func method(fromX x: Int,toY y: Int) {} method(fromX: 0,toY: 0) func method2(_ x: Int,y: Int) {} method2(0,y: 0) func method3(x: Int,y: Int) {} method3(x: 0,y: 0) // old: typealias CompleteHandler = (token: String,error: Error?) -> Void typealias CompleteHandler = (_ token: String,_ error: String?) -> Void OC API中的id现在都转到了Any,而不再是AnyObject。Swift的Any类型可以处理任何类型(包括枚举,结构体,元组,类),AnyHashable可以作为Set,Dictionary的键 fileprivate & private新增加fileprivate,如果用来标记类的方法和属性,private变成只能在class类定义内使用,不能在extension中使用;而fileprivate即以前的private,可以在本文件内的extension中使用。 许多早期库函数被省掉了多余部分UIColor.black // old: blackColor var array = ["hello","world"] array.insert("haha",at: 2) // old: atIndex 枚举值使用“小骆驼拼写法”NSTextAlignment.right 动词和名词的使用更加一致(加ed,ing后缀认为是名词)array.enumerated() // n.返回一个枚举的拷贝,old: enumerate() 函数的定义和使用都要加上括号func g(a: Int) -> Int { return 1 } func g3(a: (Int) -> Int) -> (Int) -> Int { return g } // old: func g2(a: Int -> Int) -> Int -> Int { return g } 基础类中去除了OC风格的前缀NSlet date = Date() // NSDate() 函数形参取消了var,inout修饰置于":"后// func foo(var i: Int)会报错 func foo(i: Int) {} // i是let的,不能被改变 func foo2(i: inout Int) {} 协议的可选方法也需要加上@objc@objc protocol MyProtocol { @objc optional func func1() // old: optional func func1() } 取消一些C风格
let rect = CGRect(x: 0,y: 0,width: 100,height: 100)
let queue = DispatchQueue(label: "com.test.myqueue") queue.async { print("haha") }
UserDefaults.didChangeNotification // old: NSUserDefaultsDidChangeNotification 闭包escapingswift3中,函数参数的默认闭包是非逃逸的,不需要加@noescape,如果是逃逸闭包需要添加@escaping。 启用全模块编译优化(WMO)可以提升编译性能,减少编译时间,在Release模式下开启,Debug下不推荐。 引用:Swift3.0 Release XCode8.1 Release Note 全模块编译优化 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |