这是在block里产生了循环引用
解决的办法是 创建一个本地变量 指向 自己(self).
例如:_items 实际上是 self->items,
_block 对象在创建的时候会被retain一次
改成:
__block ViewController *blockSelf = self;
_block = ^{
[blockSelf->_items addObject:@"Hello!"];
};
再例如在MJRefresh里用代码块创建刷新
- (void)addheaderRefresh {
__unsafe_unretained typeof(self) vc = self;
[self.tableView addHeaderWithCallback:^{
[vc.fakeData removeAllObjects];
for (int i = 0; i<3; i++) {
[vc.fakeData insertObject:MJRandomData atIndex:0];
}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[vc.tableView reloadData];
[vc.tableView headerEndRefreshing];
});
} dateKey:@"table"];
[self.tableView headerBeginRefreshing];
}
加红色的一句意义同上。