之前常常遇到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];
};
如此便解決