swift闭包的强引用
2016-01-08 17:31
330 查看
import UIKit class ViewController: UIViewController { // var finishedCallBack: (html: String) -> ()? var finishedCallBack: ((html: String) -> ())? override func viewDidLoad() { super.viewDidLoad() //swift 写法3 //unowned 和OC中的__unsafe_unretained一样 会造成野指针访问 //iOS 4.0 loadData {[unowned self] (html) -> () in print(self.view) } } func method2() { //swift 写法 //使用weak修饰的变量 被系统回收时 会指向 nil //当对象指向nil 时 访问nil 不会造成野指针访问 //和OC中的 __weak 一样 iOS 5.0 loadData {[weak self] (html) -> () in print(self?.view) } } func method1() { //仿OC的解决办法 //使用weak修饰的变量 被系统回收时 会指向 nil weak var weakSelf = self loadData { (html) -> () in print(weakSelf?.view) } } func loadData(finised: (html: String) -> () ) { //记录闭包 finishedCallBack = finised dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in dispatch_async(dispatch_get_main_queue(), { () -> Void in print("完成回调") //在闭包中使用属性或者方法 必须加上self //由于闭包可以从外界传递 如果不加self,调用上下文的就没有办法判断 self.finishedCallBack?(html: "hello world") }) } } deinit { print("VC 88") } }
相关文章推荐
- swift闭包
- Swift函数
- Swift字典
- Swift数组
- Swift循环
- Swift字符串
- Swift Playground
- swift基本语法
- iOS8 Core Image In Swift:视频实时滤镜
- iOS8 Core Image In Swift:人脸检测以及马赛克
- iOS8 Core Image In Swift:更复杂的滤镜
- iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用
- Swift开发IOS-UISwitch
- ubuntu下swift安装
- swift 笔记 (十二) —— 下标
- Swift开发IOS-UISlider
- 用函数式的 Swift 实现图片转字符画的功能
- SwiftBasicSyntax-Learn Swift(First Day)
- ios键盘控制 By Swift
- Swift中的willSet与didSet