美文网首页我爱编程
Block的安全用法

Block的安全用法

作者: 蝴蝶之梦天使 | 来源:发表于2018-04-17 10:51 被阅读87次
块块块

block用的越来越多
block被滥用
block被乱用

安全用法

现在总结一个安全可靠的使用方法:

__weak typeof(self) weakSelf = self;
    void (^myBlock)(void) = ^{
        __strong typeof(weakSelf) strongSelf = weakSelf;
        // Do something
    };

是的,就是这个模式:

  1. 在block外定义一个weak self.
  2. 在block内对weak self定义一个strong self。

快捷用法

可以添加两个宏定义:

/******************** 快速的定义一个weakSelf 用于block里面  ***************/
#define WS(weakSelf)  __weak __typeof(self) weakSelf = self
#define SS(strongSelf) __strong __typeof(weakSelf) strongSelf = weakSelf;

使用的时候就比较方便:

WS(weakSelf);
    void (^myBlock)(void) = ^{
        SS(strongSelf);
        // Do something
    };

再也没有内存泄露,循环应用,提前释放的问题。 轻轻松松做程序员。

参考文献:
深入研究Block捕获外部变量和__block实现原理
深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用

相关文章

  • Block的安全用法

    block用的越来越多block被滥用block被乱用 安全用法 现在总结一个安全可靠的使用方法: 是的,就是这个...

  • Swift之Block

    block用法

  • 关于Block

    1.Block基本用法: block声明返回值(^block变量名)(参数)void(^block)(); blo...

  • 白话block

    本文内容 什么是block? block的用途 block的用法 block在使用中遇到的问题 如何使用xcode...

  • ios block用法与分析

    一: block的基础用法 block声明: int(^blockDemon)(inta,intb) ,其中int...

  • Kotlin的run,let,apply,also,with的用

    run函数 用法一 定义:public inline fun(block:()->R):R=block() 功能:...

  • iOS开发-block的使用(上)

    引言:本文旨在介绍block的基本用法,怎么定义一个block,怎样使用block. block的声明与定义 首先...

  • block用法小结

    基本用法 作用block用来保存一段代码 block的标志: ^ block与函数block与函数很像1.可以保存...

  • Block基础看它就够了

    Block基本用法 "Block语法" 1.作为方法时 - (void)testGlobalBlock:(NSSt...

  • Block的学习

    基础部分 一 重要概念: 1 闭包 2 block 二 block的用法 1 block的声明,定义,调用: 声明...

网友评论

    本文标题:Block的安全用法

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