4.除了M_PI還有.pi
在過(guò)去外冀,我們使用M_PI常量來(lái)表示π。所以根據(jù)半徑求周長(zhǎng)代碼如下:
letr =? 3.0
letcircumference = 2 *?M_PI* r
在Swift3中讹弯,π提供了Float,Double與CGFloat三種形式(Float.pi这溅、Double.pi组民、CGFloat.pi),所以求周長(zhǎng)還可以這么寫:
letr = 3.0
letcircumference = 2 *?Double.pi * r
//我們還可以將前綴省略悲靴,讓其通過(guò)類型自動(dòng)推斷
letr = 3.0
letcircumference = 2 * .pi * r
5.簡(jiǎn)化GCD的寫法
關(guān)于GCD臭胜,過(guò)去寫法采用C語(yǔ)言的風(fēng)格,初學(xué)者可能會(huì)不大適應(yīng)癞尚。比如創(chuàng)建一個(gè)簡(jiǎn)單的異步線程:
letqueue = dispatch_queue_create("Swift 2.2",?nil)
dispatch_async(queue) {
print("Swift 2.2 queue")
}
Swift 3取消了這種冗余的寫法耸三,而采用了更為面向?qū)ο蟮姆绞剑?/p>
letqueue =?DispatchQueue(label:?"Swift 3")
queue.async {
print("Swift 3 queue")
}
6.Core Graphics的寫法也更加面向?qū)ο蠡?/b>
Core
Graphics是一個(gè)相當(dāng)強(qiáng)大的繪圖框架,但是和GCD一樣浇揩,它原來(lái)的API也是C語(yǔ)言風(fēng)格的仪壮。
比如我們要?jiǎng)?chuàng)建一個(gè)view,其內(nèi)部背景使用Core Graphics進(jìn)行繪制(紅色邊框胳徽,藍(lán)色背景)积锅。過(guò)去我們這么寫:
classView:?UIView{
overridefuncdrawRect(rect:?CGRect) {
letcontext =?UIGraphicsGetCurrentContext()
letblue =?UIColor.blueColor().CGColor
CGContextSetFillColorWithColor(context, blue)
letred =?UIColor.redColor().CGColor
CGContextSetStrokeColorWithColor(context, red)
CGContextSetLineWidth(context, 10)
CGContextAddRect(context, frame)
CGContextDrawPath(context, .FillStroke)
}
}
letframe =?CGRect(x: 0, y: 0, width: 100, height: 50)
letaView =?View(frame: frame)
在Swift 3中改進(jìn)了寫法,只要對(duì)當(dāng)前畫布上下文解包养盗,之后的所有繪制操作就都基于解包對(duì)象缚陷。
classView:?UIView{
overridefuncdraw(_ rect:?CGRect) {
guard?letcontext =?UIGraphicsGetCurrentContext()?else{
return
}
letblue =?UIColor.blue.cgColor
context.setFillColor(blue)
letred =?UIColor.red.cgColor
context.setStrokeColor(red)
context.setLineWidth(10)
context.addRect(frame)
context.drawPath(using: .fillStroke)
}
}
letframe =?CGRect(x: 0, y: 0, width: 100, height: 50)
letaView =?View(frame: frame)
7.新增的訪問(wèn)控制關(guān)鍵字:fileprivate、open
在Swift 3中在原有的3個(gè)訪問(wèn)控制關(guān)鍵字private往核、public蹬跃、internal外。又添加了2個(gè)新關(guān)鍵字fileprivate、open蝶缀。它們可以看成是對(duì)原來(lái)private和public的進(jìn)一步細(xì)分丹喻。