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     }];

 

posted on 2015-09-07 14:15  Baymax01  阅读(301)  评论(0编辑  收藏  举报

导航