美文网首页
block中多重引用

block中多重引用

作者: zaq1125 | 来源:发表于2020-10-10 10:38 被阅读0次
device.connect({ [weak self] (tmpDevice, success) in
     guard let self = self else { return }
     if success {
            // 连接成功
            device.discoverCharacteristics(for: self.Service_UUID) { (success) -> (Void) in
                        if success {
                            device.subscribe(forService: self.Service_UUID, characteristic: self.NOTIFY_Characteristic_UUID) { (device, serviceData, characterData, success) in
                                if let completion = completion {
                                    completion(device, true)
                                }
                            }
                            device.readCharacteristicCallback = ({ [weak self] (characteristic, model) in
                                if let model = model {
                                    self?.receiveNotifyModel(model: model)
                                }
                            })
                        }
                        else {
                            self.connectToDevice(device: device, curCount: curCount - 1, completion)
                        }
                    }
                }
                else {
                    self.connectToDevice(device: device, curCount: curCount - 1,completion)
                }
            })

在第一重block中如果使用了

guard let self = self else { return }

那么接下来的内部的每一重block,用到的self都是强指针,都要使用[weak self]防止强引用。

如果第一重block中,只使用了[weak self],不使用

guard let self = self else { return }

那么后面的block中也没必要使用[weak self],否则会出错。

相关文章

  • block中多重引用

    在第一重block中如果使用了 那么接下来的内部的每一重block,用到的self都是强指针,都要使用[weak ...

  • block的使用

    一个对象中强引用了block,在block中又强引用了该对象,就会发生循环引用。1、变量在block中使用 2、对...

  • iOS面试题 关于block 部分

    1、使用block时什么情况会发生引用循环,如何解决? 答:一个对象中强引用了block,在block中又强引用了...

  • Block 循环引用(上)

    使用block时什么情况会发生引用循环,如何解决? 一个对象中强引用了block,在block中又强引用了该对象,...

  • #1-对于block的理解,mrc和arc的区别

    block在ARC和MRC中的声明引用有些区别: copy使栈中的block转移到堆中,并对block会引用的对象...

  • 使用Block需注意的问题

    1、block中引用外部变量block中引用外部变量时,通常会把对象当做常量变量编码到block中,并且在bloc...

  • iOS __block和__weak区别

    __block对象在block中可以被修改、重新赋值 __block对象在block中不会被block强引用一次,...

  • Block循环引用的四种解决方案

    Block常见的循环引用模型 以下是常见的Block循环引用模型,self引用block,block引用self,...

  • iOS复习之Block

    iOS面试中如何优雅回答Block iOS block循环引用

  • swift或oc项目中的内存泄漏

    场景1:代理delegate放在block中引用,虽然delegate是弱引用但是在block中还是会将deleg...

网友评论

      本文标题:block中多重引用

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