zoukankan      html  css  js  c++  java
  • 处理Block中的self问题(Capturing 'self' strongly in this block is likely to lead to a retain cycle)

    警告:ARC Retain Cycle

    Capturing 'self' strongly in this block is likely to lead to a retain cycle

    代码:

        self.refreshHeader.beginRefreshingBlock=^(){

            // 后台执行:

            dispatch_async(dispatch_get_global_queue(0, 0), ^{

                sleep(2);

                dispatch_async(dispatch_get_main_queue(), ^{

                    // 主线程刷新视图

                    weakSelf.total=20;

                    [self.mainTableView reloadData];

                    [self.refreshHeader endRefreshing];

                });

            });

        };

    针对这个问题,解决很简单,将self弱化即可。修改后代码如下:

        __weak MainViewController * weakSelf = self;

        

        self.refreshHeader.beginRefreshingBlock=^(){

            // 后台执行:

            dispatch_async(dispatch_get_global_queue(0, 0), ^{

                sleep(2);

                dispatch_async(dispatch_get_main_queue(), ^{

                    // 主线程刷新视图

                    weakSelf.total=20;

                    [weakSelf.mainTableView reloadData];

                    [weakSelf.refreshHeader endRefreshing];

                });

            });

        };

  • 相关阅读:
    HashMap源码分析jdk1.8
    Struts1.x总结
    session的使用
    浅谈EL
    浅谈JavaBean
    try、catch、finally带return的执行顺序总结
    jvm内存模型
    left join 、right join 、inner join之间的区别
    js按键事件
    log4j配置详解
  • 原文地址:https://www.cnblogs.com/yyt-hehe-yyt/p/4694088.html
Copyright © 2011-2022 走看看