美文网首页
关于Block的一个经典bug

关于Block的一个经典bug

作者: 元昊 | 来源:发表于2017-09-18 15:13 被阅读11次

    之前常常遇到block的循环引用问题,就稍微研究了一下,block对于访问外部对象类型有严格的限制,通常会使用__block,__week修饰一下,然而这二者也还是有区别的,具体后期补上
    先说遇到的问题

    ProductDetailVC *productVC = [[ProductDetailVC alloc] init];
    
                
                goodsCell.selectBolck = ^(NSUInteger index) {
                  
                    
                    GolbalGoodsModelgoods *goods = _golbalGoodsArr[index];
                    
                    productVC.pro_id = goods.pro_id;
                    
                    [self.navigationController pushViewController:productVC animated:YES];
                    
                };
    

    这是一开始的代码,每次取到的pro_id都是不同的,但是没次打开都是一个pro_id,回头想一下才明白还是block引用的问题。

     goodsCell.selectBolck = ^(NSUInteger index) {
                  
                    ProductDetailVC *productVC = [[ProductDetailVC alloc] init];
                    
                    GolbalGoodsModelgoods *goods = _golbalGoodsArr[index];
                    
                    productVC.pro_id = goods.pro_id;
                    
                    [self.navigationController pushViewController:productVC animated:YES];
                    
                };
    

    如此便解决

    参考链接:
    http://www.jianshu.com/p/8995a60384fd

    http://www.jianshu.com/p/a19f6dbb14da

    相关文章

      网友评论

          本文标题:关于Block的一个经典bug

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