您的位置:首页 > 移动开发 > Swift

swift基本语法(总结提炼版)之014 swift 之闭包循环引用

2016-05-24 23:49 591 查看
代码:

import UIKit

class ViewController: UIViewController {

// Swift中定义属性, 必须在构造方法中初始化, 否则就必须加上?
// 注意: 以下写法代表闭包的返回值可以为nil
// var finished: ()->()?
var finished: (()->())?
override func viewDidLoad() {
super.viewDidLoad()

// OC中 __weak typeof(self) weakSelf = self
weak var weakSelf = self
loadData { () -> () in

print("更新UI")
// 闭包和block很像, 都是提前准备好代码, 在需要时执行
// block会对外部变量进行copy, 保证执行代码时变量还在
// block中用到self一定要非常小心
// 闭包也一样, 为了能够准确定位到view, 所以需要写self
// 提示: Swift开发中能不写self就不写self, 一看到self就想到闭包
// self.view.backgroundColor = UIColor.redColor()
weakSelf!.view.backgroundColor = UIColor.redColor() //option + 鼠标点击可以看到这个weakSelf后面有个? 代表可选类型 加上!代表明确有值
}
}
func loadData(finished: ()->()){
print("耗时操作")
// 保存闭包
self.finished = finished
finished()
}

// 类似于dealloc方法
deinit
{
print("我滚了")
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: