Block的强强引用问题(循环引用)
1 //block传值 2 __weak SubjectViewController *weakSelf = self;//解决强强引用的问题 3 cell.clickBlock = ^(AppItem *aItem){ 4 DetailViewController *dvc = [[DetailViewController alloc]init]; 5 dvc.applicationId = aItem.applicationId; 6 7 weakSelf.hidesBottomBarWhenPushed = YES; 8 [weakSelf.navigationController pushViewController:dvc animated:YES]; 9 weakSelf.hidesBottomBarWhenPushed = NO; 10 }; 11 12 13 14 //block的循环引用(你持有我,我持有你) 15 /* 16 1.self(controller) self.view 持有红色的view 17 2.因为使用了 block,红色的 view 持有self 18 */ 19 // self(控制器) -> self.view -> 红色的 view -> block -> self 20 21 22 __weak SecondViewController *tmpSelf = self; 23 [viewRed didBeganBlock:^(UIView *view) { 24 NSLog(@"began"); 25 tmpSelf.view.backgroundColor = [UIColor blueColor]; 26 } movedBlock:^(UIView *view) { 27 NSLog(@"move"); 28 } endBloac:^(UIView *view) { 29 NSLog(@"end"); 30 }];