zoukankan      html  css  js  c++  java
  • 关于block的回调使用-防止内存泄露问题

    block 一般用于回调,比方请求数据我们把asi封装好,仅仅用block调数据就方便很多

    获取到得数据假设要给之加入数据,切记不能够使用self.(这个数组) 或者_(这个数组) addObject 这个函数

    由于我们要在block内部改变外部变量,我们须要在使用blcok回调之前 

    声明

    __weaktypeof(self) wekSelf = self;  (在这里我使用wekSelf)

    在block回调代码段内 一切self(数组或者控件) 所有替换成wekSelf防止内存泄露。


    呈现一段代码:

     __weak typeof(self) wekSelf =self;

    self.page = 1;

    NSDictionary *dic = @{@"page":@(self.page)};

     [MyDataServicepostMonopolyGroupListRequest:dic cllback:^(id data) {

            

           if ([[data objectForKey:@"code"]integerValue] == 200) {

               NSArray *content = [[data objectForKey:@"content"]objectForKey:@"subject_lists"];

                

               if (content && ![content isKindOfClass:[NSNull class]]) {

                

                    [wekSelf.groupArrremoveAllObjects];

                    

                   for (NSDictionary *dicin content) {

                       MYGroup *model = [[MYGroupalloc] initWithJson:dic];

                        [wekSelf.groupArraddObject:model];

                    }

                   dispatch_async(dispatch_get_main_queue(), ^{

                        

                        [wekSelf.circleTableViewreloadData];


                        [wekSelf.circleHeaderperformSelector:@selector(endRefreshing)withObject:nilafterDelay:0.1];

                    });

                    

                }

            }

        }];



  • 相关阅读:
    Unity c# 状态机的简单入门
    python实战教程之自动扫雷(自己存下来学习之用)
    Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress-十一(1)
    Ubuntu安装eclipse以及创建快捷方式
    Dockerfile-HEALTHCHECK指令
    各个版本Microsoft Visual C++运行库下载
    docker 远程连接设置
    centos7安装redis3.2.12
    Windows下允许redis远程访问
    UltraISO制作U盘启动盘-centos7
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7352412.html
Copyright © 2011-2022 走看看