美文网首页
关于Block内存泄露问题

关于Block内存泄露问题

作者: 木子小静 | 来源:发表于2016-07-05 16:32 被阅读279次

考虑到block的创建问题网络上已经有很多文章,所以我这里就不做过多的阐述,有需要的盆友们可以自己去找一下哈~我这里只对block平时不注意的地方进行一下描述

1.Block的定义

void (^block)() = ^(){
    NSLog(@"block");
};

此block的类型:void(^)()

Block的调用:block();

2.Block的快速创建

输入inlineBlock,回车即可出现

// blockName:block的变量名
returnType(^blockName)(parameterTypes) = ^(parameters) {
        statements
    };

3.设置block的别名:typedef void(^myBlock)( int a);

myBlock myBlock = ^(int a){
NSLog(@"%d", a);
};
myBlock(2);

4.Block的内存泄露

block需要注意内存泄露的问题,在平时的使用中可以这样避免内存泄露的出现


// 加在block前面
typeof(self) __weak weakSelf = self;

[ViewController returnBlock:^(BOOL finished) {
        if (finished) {
           
            // 之后要把此block里所有的self用weakSelf替换掉
            [weakSelf makeDate];
            [weakSelf theLineChange];
        }
    }];

这样可以保证当前的这个block不存在内存泄露的问题,考虑到项目中的block很多地方都会用到,推荐将typeof(self) __weak weakSelf = self;这句话写成宏,用起来会方便很多

5.关于block的其他方面

Block作用:跟函数和方法很像,就是用来保存一段代码,等到恰当的时候再去使用
Block使用范围,:用block传值,处理网络的时候经常使用block封装代码
请求网络数据(延迟)先把展示到空间的代码先保存到block,等请求到数据的时候直接调用block

相关文章

  • 关于Block内存泄露问题

    考虑到block的创建问题网络上已经有很多文章,所以我这里就不做过多的阐述,有需要的盆友们可以自己去找一下哈~我这...

  • Block中内存泄露问题

    内存泄露不仅存在于MRC(MannulReference Counting)中,而且也存在于ARC(Automat...

  • 关于华为inputMethodManager内存泄露

    一个关于内存泄露的问题,相信使用华为手机检测内存泄露的时候都会发现inputMethodManager内存泄露这个...

  • 文章目录

    block block内强引用导致的内存泄露 NStimer UITableView滚动式NSTimer停止计数 ...

  • 项目中优化细节

    一.内存优化 1.减少内存泄露。如Timer,Delegate,Block,CoreFoundation对象(C对...

  • iOS 底层 day29 循环引用 和 内存泄露

    一、UIView 的 block 写动画 1. 请问下面代码有内存泄露吗?有循环引用吗? 没有内存泄露,也没有循环...

  • iOS - 性能优化

    内存方面 检测内存泄露 block使用上的强强循环导致页面不释放 :规范block使用,避免循环不释放 创建很多临...

  • iOS 性能优化

    列举在项目开发中可能遇到的优化点 1、内存泄露检测可能出现内存泄露的地方:循环引用,block强引用,NSTime...

  • iOS开发-Block容易造成循环引用

    一 、Block的内存泄露体现block在copy时都会对block内部用到的对象进行强引用(ARC)或者reta...

  • Android 内存优化总结&实践

    内存泄露 大部分的内存问题都是内存泄露导致的,Android里也有一些很常见的内存泄露问题这里简单罗列下: 详细见...

网友评论

      本文标题:关于Block内存泄露问题

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