关于Block的一个经典bug

之前常常遇到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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...
    远航的移动开发历程阅读 13,892评论 12 197
  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 9,158评论 0 23
  • 今天算是正式开学 其实昨天就来了,跟男票出去浪了 这一周没有课下周开始见习 深深感觉考研已经在我生活中了 同学们都...
    _Misty_阅读 536评论 2 0
  • 乡亲们父老们,大家好,这是咱九组第一次的介绍,希望喜欢的鼓个掌,有人捧个人场,没人就点个赞\(≧≦)/ 首先我要介...
    1a7c398bff4d阅读 4,099评论 0 0
  • 首次(或者安装新版本)pod realm的时候,会下载sync-cocoa,core文件,这两儿文件有点大,所以p...
    Chakery阅读 7,150评论 0 1

友情链接更多精彩内容