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("我滚了")
}
}
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("我滚了")
}
}
相关文章推荐
- swift基本语法(总结提炼版)之013 swift 之闭包返回值
- Swift成为主流语言的10个理由
- Swift难点-继承中的构造规则实例详解
- swift资源库--Swift泛型
- Swift-自动引用计数(Automatic Reference Counting)(十四)
- 使用Go语言开发iOS应用(Swift版)
- swift 移动支付之【微信支付】开发步骤
- swift资源库—3—字典/集合/数组
- Swift基础小结_2
- Swift基础小结_1
- swift向方法传数组参数的语法
- swift基础笔记4-类和结构体
- swift新版本相对于swift1.0版本改动大全
- swift dictionary 是否存在key
- swift基础笔记3-枚举
- Swift ABI 稳定时间将被推迟,新版本 iPhone 可能包括双镜头相机
- Swift中的协议和闭包
- Swift的自动引用计数->解决内存泄露
- [快速学会Swift第三方库] SwiftyJSON篇
- Swift_ uitableview使用自定义(xib)cell