美文网首页
block引用的改写

block引用的改写

作者: 李贤立 | 来源:发表于2017-03-29 05:53 被阅读11次

如果【block内部】使用【外部声明的强引用】访问【对象A】, 那么【block内部】会自动产生一个【强引用】指向【对象A】。

如果【block内部】使用【外部声明的弱引用】访问【对象A】, 那么【block内部】会自动产生一个【弱引用】指向【对象A】

__weak typeof(self) weakSelf = self;

dispatch_block_t block = ^{

[weakSelf doSomething]; // weakSelf != nil

// preemption, weakSelf turned nil

[weakSelf doSomethingElse]; // weakSelf == nil

};

最好这样调用:

__weak typeof(self) weakSelf = self;

myObj.myBlock = ^{

__strong typeof(self) strongSelf = weakSelf;

if (strongSelf) {

[strongSelf doSomething]; // strongSelf != nil

// preemption, strongSelf still not nil(抢占的时候,strongSelf 还是非 nil 的)

[strongSelf doSomethingElse]; // strongSelf != nil }

else { // Probably nothing... return;

}

};

相关文章

  • block引用的改写

    如果【block内部】使用【外部声明的强引用】访问【对象A】, 那么【block内部】会自动产生一个【强引用】指向...

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

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

  • ios相关:block

    三种常用方式 用block改写UIButton点击事件,block改写UIAlerView的代理 iOS bloc...

  • 浅谈OC中block

    Block的循环引用:block强引用self,self强引用block。解决方案:对self进行弱引用。 内部修...

  • __block与__weak的真正区别

    block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block...

  • __block和__weak修饰符的区别

    block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block...

  • __block与__weak的区别

    block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block...

  • Block的循环引用

    Block的循环引用(需要完全掌握) 5.1造成Block循环引用的条件:"Block强引用self"并且"sel...

  • Block循环引用的两种情况(self和私有成员变量)

    Block的循环引用问题非常常见 1、Block 内部引用 self,造成循环引用 (1)这种 Block 循环引...

  • block用法大全

    block语句块 如何解决block循环引用 高逼格理解block循环引用 block相关

网友评论

      本文标题:block引用的改写

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