问题: 我一直在获得EXC_BAD_ACCESS。在我打开NSZombieEnabled后,我看到[FeatureCommentListViewController respondsToSelector:]:消息发送到解除分配的实例0x7c1dc30
在我将项目更改为ARC之前,没有此类错误,但在我更改为ARC后,出现此错误。
我在块中声明了一个ViewController并将其推入导航控制器。这个理由会不会缩短它的寿命?
UIBlockButton来自this post
UIBlockButton *lbGood3 = [[UIBlockButton alloc] initWithFrame:CGRectMake(0, 0, First_Button_Width, [self getGoodRow2Height:productDetail]) ];
[lbGood3 handleControlEvent:UIControlEventTouchUpInside withBlock:^ {
NSLog(@"%@", Label.text);
ProductDetail *productDetail = [productDetailDict objectForKey:@"product"];
NSString *dp_id = [NSString stringWithFormat:@"%@-%@",productDetail.url_crc,productDetail.site_id];
FeatureCommentListViewController *cmtListController = [[FeatureCommentListViewController alloc] initWithNibName:@"FeatureCommentListViewController" bundle:nil];
cmtListController.title = Label.text;
cmtListController.isReviewed=isReviewed;
cmtListController.productDetail=productDetail;
cmtListController.dp_id=dp_id;
cmtListController.feature_name = @"&feature_good_id=2";
[self.navigationController pushViewController:cmtListController animated:YES];
}];
我应该将控制器声明为此viewController的成员还是只声明该块?
答案 0 :(得分:0)
我通过在viewDidLoad函数中分配FeatureCommentListViewController并在块中使用它来解决这个问题。
答案 1 :(得分:-2)
<强>第一即可。我想知道你为什么要在一个块中推送视图控制器而不是在主线程中?对触摸动作做出快速反应是不是很重要?
第二次。[self.navigationController pushViewController:cmtListController animated:YES];
在你的区块中。只要您离开当前navigationController
,self.navigationController
代表的是什么?
<强>第三即可。如果您在块中声明viewController
,则可以在Hermann Klecker提及的前面添加__block
。