美文网首页
block的内存管理

block的内存管理

作者: March_Cullen | 来源:发表于2017-03-08 22:05 被阅读0次
  • block的内存默认放在栈中,(开发人员不需要管理block内存),block所引用的对象的retainCount不变;
    Block_copy(block);

  • 对bloc进行了copy操作,block的内存会搬到堆里面,block所引用的对象retainCount+1;
    Block_release(block);

  • 对block进行了release操作之后,block所引用的对象retainCount不变;

  • 1.默认情况下,block的内存是在栈中,它不会对所引用的对象进行任何操作

  • 2.如果对block做一次copy操作,block的内存就会在堆中

    • 2.1 它会对所引用对象做一次retain操作,retainCount+1
      MRC:使用__block修饰所引用的对象,block就不会做retain操作
      ARC:使用__unsafe_unretained或__weak修饰所引用的对象,block就不会做retain操作
    • 2.2 使用assign(nonatomic, assign)修饰block,block的内存放在栈中;
    • 2.3 一般使用copy(nonatomic, copy)修饰block,block的内存放在堆中。
@property (nonatomic, copy) void (^block))();
- (void)dealloc {
Block_release(block);
[super dealloc];
}

相关文章

  • Block内存管理实例分析

    Block内存管理实例分析 Block内存管理实例分析

  • Block内存管理

    对block自身内存的管理 对于block,有两个内存管理方法:Block_copy, Block_release...

  • iOS内存管理详解

    目录 block内存管理 autorelease内存管理 weak对象内存管理 NSString内存管理 new、...

  • Block 使用总结

    Block 内存管理: Block 内存主要分派到 NSGlobalBlock(data area),NSMall...

  • iOS面试之Block大全

    Block Block内容如下: 关于Block 截获变量 __block修饰符 Block的内存管理 Block...

  • iOS面试之Block模块

    Block Block内容如下: 关于Block 截获变量 __block修饰符 Block的内存管理 Block...

  • Block

    一、Block本质 二、 BlocK截获变量 三、__block 修饰变量 四、Block内存管理 五、Block...

  • Block

    Block介绍 截获变量 __block修饰符 Block的内存管理 Block的循环引用 一、Block介绍 1...

  • block的内存管理

    block的内存默认放在栈中,(开发人员不需要管理block内存),block所引用的对象的retainCount...

  • block的一些注意事项

    Block的使用注意: block的内存管理(注意循环引用,默认在栈中(不需要内存管理),通过copy就在在堆中,...

网友评论

      本文标题:block的内存管理

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