block的内存管理

block的内存管理 

1、没有使用局部变量的block内存存储在全局区

2、block内部使用局部变量的时候内存存在栈区

3、当block比昂两定义为属性的时候,必须使用copy修饰,retain无效,retain和assign会造成野指针问题

4、当对block进行copy操作的时候,此时block的内存区域为堆区

5、当不使用block是需要使用Block_Release()进行销毁

-(void)dealloc

  {

      Block_release(_colorBlock);

      [super dealloc];

  }

 

6、防止循环引用的问题

在非ARC下使用_block来解决block循环引用的问题

在ARC下使用_weak来解决循环引用的问题

- (void)done {

    _secondVC= [[SecondViewController alloc] init];

    

    __block FirstViewController *firstVC = self;

    

    self.secondVC.block = ^(NSString *string) {

        firstVC.label.text = string;

    };

    

    [self.navigationController pushViewController:self.secondVC animated:YES];

}

}; 

 

posted on 2016-02-23 15:43  喵喵1007  阅读(117)  评论(0编辑  收藏  举报

导航