设为首页 加入收藏

TOP

Swift3新特性汇总(二)
2017-10-10 12:15:08 】 浏览:6166
Tags:Swift3 特性 汇总
ce("tutorials", ofType: "json")
let url = NSURL(fileURLWithPath: file!)
let data = NSData(contentsOfURL: url)
let json = try! NSJSONSerialization.JSONObjectWithData(data!, options: []) print(json)

在 Swift 3 中,将移除 NS 前缀,就变成了:

let file = Bundle.main.path(forResource: "tutorials", ofType: "json")
let url = URL(fileURLWithPath: file!)
let data = try! Data(contentsOf: url)
let json = try! JSONSerialization.jsonObject(with: data) print(json)

4、除了M_PI 还有 .pi

在过去,我们使用 M_PI 常量来表示 π。所以根据半径求周长代码如下:

let r = 3.0
let circumference = 2 * M_PI * r

在 Swift 3 中,π 提供了 Float,Double 与 CGFloat 三种形式(Float.pi、Double.pi、CGFloat.pi),所以求周长还可以这么写:

let r =  3.0
let circumference = 2 * Double.pi * r //我们还可以将前缀省略,让其通过类型自动推断 let r = 3.0
let circumference = 2 * .pi * r

5、简化GCD的写法

关于 GCD,我原来写过一篇相关文章:Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
过去写法采用 C 语言的风格,初学者可能会不大适应。比如创建一个简单的异步线程:

let queue = dispatch_queue_create("Swift 2.2", nil)
dispatch_async(queue) {
    print("Swift 2.2 queue")
}

Swift 3 取消了这种冗余的写法,而采用了更为面向对象的方式:

let queue = DispatchQueue(label: "Swift 3")
queue.async {
    print("Swift 3 queue")
}

6、Core Graphics的写法也更加面向对象化

Core Graphics 是一个相当强大的绘图框架,但是和 GCD 一样,它原来的 API 也是 C 语言风格的。
比如我们要创建一个 view,其内部背景使用 Core Graphics 进行绘制(红色边框,蓝色背景)。过去我们这么写:
class View: UIView {
    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()
        let blue = UIColor.blueColor().CGColor
        CGContextSetFillColorWithColor(context, blue)
        let red = UIColor.redColor().CGColor
        CGContextSetStrokeColorWithColor(context, red)
        CGContextSetLineWidth(context, 10)
        CGContextAddRect(context, frame)
        CGContextDrawPath(context, .FillStroke)
    }
}

let frame = CGRect(x: 0, y: 0, width: 100, height: 50)
let aView = View(frame: frame)

在 Swift 3 中改进了写法,只要对当前画布上下文解包,之后的所有绘制操作就都基于解包对象。

class View: UIView {
    override func draw(_ rect: CGRect) {
        guard let context = UIGraphicsGetCurrentContext() else {
            return
        }
        let blue = UIColor.blue.cgColor
        context.setFillColor(blue)
        let red = UIColor.red.cgColor
        context.setStrokeColor(red)
        context.setLineWidth(10)
        context.addRect(frame)
        context.drawPath(using: .fillStroke)
    }
}

let frame = CGRect(x: 0, y: 0, width: 100, height: 50)
let aView = View(frame: frame)

7、新增的访问控制关键字:fileprivate、open

在 Swift 3 中在原有的 3 个访问控制关键字 private、public、internal 外。又添加了2个新关键字 filep

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Swift3.0服务端开发(二) 静态文件.. 下一篇Swift3 - String 字符串、Array ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目