美文网首页swift
21.swift-block循环引用

21.swift-block循环引用

作者: ChaosHeart | 来源:发表于2021-07-23 17:13 被阅读0次

1.实现:


import UIKit

class AFNetHttp: NSObject {
    
    
    ///1.读取数据
    func loadData(callBack : @escaping (_ block : String)->()) {
        
        DispatchQueue.global().async {
            print("异步:",Thread.current);
            
            DispatchQueue.main.sync {
                print("同步:",Thread.current);
                
                //调用闭包
                callBack("callBack");
            }
        }
    }
    
///2.block作为类型
    var callBlock : ((_ call : String)->())?
  
    func getData(call : @escaping (_ block : String)->()) {
        
        self.callBlock = call;
        
        DispatchQueue.global().async {
            print("异步:",Thread.current);
            
            DispatchQueue.main.sync {
                print("同步:",Thread.current);
                
                //调用闭包
                call("call");
            }
        }
    }
    
}

2.调用:


import UIKit

class BlockViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    
    ///1.手指开始点击
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        ///实现方法
        ///解决循环引用 [weak self]
        AFNetHttp.init().loadData {[weak self] (block) in
            print("viewController : ",block);
            self?.view.backgroundColor = UIColor.red;
        }
    }
    
    ///2.手指开始移动
    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        ///解决循环引用 [weak self]
        AFNetHttp.init().getData {[weak self] (call) in
            self?.view.backgroundColor = UIColor.yellow;
            
        }
    }
    
    ///
    deinit {
        print("销毁");
    }

}

相关文章

  • 21.swift-block循环引用

    1.实现: 2.调用:

  • 4-8 循环引用

    3种循环引用 自循环引用 相互循环引用 多循环引用 Block的循环引用 NSTimer 的循环引用 破除循环引用...

  • 循环引用的相关问题

    1、循环引用的种类(1)自循环引用(2)相互循环引用(3)多循环引用 如何破除循环引用?(1)避免产生循环引用(2...

  • iOS 内存管理面试题(循环引用)

    循环引用 循环引用的实质:多个对象相互之间有强引用,不能释放让系统回收。 如何解决循环引用? 1、避免产生循环引用...

  • 内存管理-循环引用

    三种类型循环引用 自循环引用 相互循环引用 多循环引用 自循环引用 假如有一个对象,内部强持有它的成员变量obj,...

  • iOS 循环引用

    1. 循环应用的分类: 自循环引用; 相互循环引用; 多循环引用; 自循环引用: 一个对象中有一个成员变量A; 如...

  • iOS开发 循环引用的几种场景

    delegate 循环引用如果delegate使用strong修饰容易引起循环引用 block 循环引用block...

  • Day2

    1 单方向的引用不会产生循环引用。循环引用:闭包引用了self,self引用了闭包。Swift推荐使用解决循环引用...

  • 避免Block的循环引用

    避免Block的循环引用 什么是循环引用,什么时候发生循环引用 1 循环引用就是当self 拥有一个block的...

  • iOS基础 Block解决循环引用

    block 循环引用循环引用 A对象持有B,B又持有A,互相强引用 解决循环引用问题:ARC 和MRC ARC:...

网友评论

    本文标题:21.swift-block循环引用

    本文链接:https://www.haomeiwen.com/subject/firzlltx.html