之前常常遇到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];
};
如此便解决
网友评论