-
++ , -- 操作符更改成 += 1,-= 1;
for 循環(huán) :
for(int i = 0 ; i < 100 ; i++){} 改成 for in:
for i in 1...100 {} 或者改成 for-each 循環(huán)(閉包)
(1...100).forEach { print( $0) }
2.Currying 移除柯里化函數(shù):
func foo(x:Int)(y: Int)
3.移除變量參數(shù):
func 中不再允許聲明var 參數(shù):
func 用參數(shù)變量(var i: Int)//不會改變調(diào)用者的變量, 只在函數(shù)中有效
如果一定要觀察調(diào)用者變量的變化情況
func 用inout變量(inout i:Int)//會改變調(diào)用者的變量,可以觀察
4.函數(shù)調(diào)用第一個參數(shù)必須加標(biāo)簽
之前,函數(shù)調(diào)用可以不加第一個參數(shù)標(biāo)簽
func foo(x:Int,y:Int)
foo(1,y:2)
Swift 3, 函數(shù)調(diào)用必須要加第一個參數(shù)的標(biāo)簽
func foo(x:Int, y:Int)
foo(x:1,y:2)
如果swift的代碼是 3.0之前寫的, 不想每個調(diào)用方法去添加缺少的參數(shù), 可以吧方法的參數(shù)改成省略: fun foo(_ x:Int, y:Int) 調(diào)用方法可以使用 foo(1,y:2)
5.Selector, KeyPath 不再以String的形式出現(xiàn)
給一個Button實例增加一個單機方法:
aButton.addTarget(...,action:“tap”,…) 改寫成:
aButton.addTarget(...,action:#selector(self.tap()),…)
獲取一個Student類的變量girlFriendName:
aStudent.valueForKeyPath(“girlFriendName”)
aStudent.value (forKeyPath: #keyPath(Student.girlFriendName))
6.去掉NS前綴
去除NS前綴的類型
提升的類型,完整列表(https://github.com/apple/swift-evolution/blob/master/proposals/0086-drop-foundation-ns.md)
7.圓周率
MI_PI:原來使用
.pi: swift 3使用
Float.pi
Double.pi
CGFloat.pi
8.GCD
從C式的面向過程 到 Swift式的面向?qū)ο笥梅?br> let queue = dispatch_queue_create( "com.xxx.xxxx", nil)
dispatch_async(queue) {
print("Swift 2.2的GCD 隊列")
}let queue = DispatchQueue(label: "com.xxx.xxxx") queue.async { print(“Swift 3 中的GCD隊列") }
9.枚舉成員首字母小寫
.Add 到.add
.CGColor 到.cgColor
.TouchUpInside 到.touchUpInside
.FillStroke 到.fillStroke 等等
10.允許(大部分)關(guān)鍵字作為成員引用
enum UITableViewCellStyle : Int {
case `default`
case value1
case value2
case subtitle
}
let cell = UITableViewCell(style: .default, reuseIdentifier: nil) swift 2.2
let cell = UITableViewCell(style: .default, reuseIdentifier: nil) swift 3
11.Swift調(diào)用OC API更Swift ①規(guī)則
let searchText= userInput.stringByTrimmingCharactersInSet( NSCharacterSet.whitespaceAndNewlineCharacterSet()) swift 2.2
let searchText= userInput.trimming (.whitespaceAndNewlines)
大致規(guī)則:
盡量簡短的、更Swift式的枚舉、方法名,在3個單詞以內(nèi)為佳。
去除類型名稱中的重復(fù)單詞(噪音)
增加默認(rèn)參數(shù)
增加第一個參數(shù)標(biāo)簽
在布爾屬性前加前綴is
非類型(值)聲明一律小寫
讓類遵循Comparable協(xié)議
12.Swift方法的動詞和名詞
名詞-返回一個特定的值
動詞-執(zhí)行一個特定的操作
var *array = [1, 5, 3, 2, 4]
let *sortedArray = array.sort()//動詞 重新排序會改變 array
print(sortedArray)
var *array = [1, 5, 3, 2, 4]
let *sortedArray = array.sorted()//名詞 重新排序不會改變array
print(sortedArray)
13.xcode改進
storyboard 無極縮放
size class不再抽象話, 而是具體的設(shè)備
簽名改進