zoukankan      html  css  js  c++  java
  • IOS block使用中碰到的一个小坑

    1.先上段代码                                                                                                                                       

           

         __block  typeof(self) tmpSelf = self;
        [tableview addLegendHeaderWithRefreshingBlock:^(){
            [ tmpSelf initData:NO];
        }];

       写的时候没怎么注意,后面测试的时候发现每次push到这个页面的时候内存就不断增大,而且比较有规律,考虑是内存泄露了,用静态和动态分析没发现有

    内存泄露,但是内存就是不断的增长,后面一想是不是没释放,断点下dealloc发现果然没执行,然后各种检查各种委托代理看有木有循环引用,一圈看下来

    我特么代理基本的用的weak修饰不太可能照成循环引用,后面没办法只能注释viewdidload函数里的各个方法,终于找到了问题所在,就是上面这段代码,感

    觉好坑,以后写代码还是认真点,这个错误很无语,很难找这个问题,希望以后不会犯这样的错误。

    2.正确的写法

    __block __weak typeof(self) tmpSelf = self;
        [tableview addLegendHeaderWithRefreshingBlock:^(){
            [ tmpSelf initData:NO];
        }];
  • 相关阅读:
    读写锁机制原理
    jvm
    (WPF) 再议binding:点击User Control时,User Control变换颜色或做其他的处理。
    (WF)
    (C# ) 解析XML。
    (C#) 调用执行批处理文件
    (WPF, Service) 删除注册表中的USB Enum值.
    (C#) 文件操作
    (C#) Parse xml 时, 返回的node值总是null。
    (PowerShell) Managing Windows Registry
  • 原文地址:https://www.cnblogs.com/try-wyh/p/4600675.html
Copyright © 2011-2022 走看看