問題: 我不斷收到EXC_BAD_ACCESS。我打開NSZombieEnabled後,我看到這個[FeatureCommentListViewController respondsToSelector:]:消息發送到釋放實例0x7c1dc30在ARC下,使用ARC之後繼續獲取EXC_BAD_ACCESS,因爲使用了Block?
之前,我改變了我的項目的弧度,有沒有這樣的錯誤,但以後我改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的成員或只是聲明出塊的?
你從哪裏得到了EXC_BAD_ACCESS? – 2012-07-12 14:58:54
我想知道爲什麼推一個視圖控制器在一個塊,但不是在主線程?對觸摸動作做出快速響應不是很重要嗎? PS。如赫爾曼克萊克提到的,如果你從塊中聲明瞭vc,你可以在它之前添加__block。 – 2012-07-12 15:04:15
你有堆棧跟蹤嗎? EXC_BAD_ACCESS是否發生在塊內或控制器被按下後?你的導航控制器在你推送時應該保留'cmtListController',ARC應該在'cmtListController'的最後一次訪問之後在塊尾添加'[cmtListController release]'。 – 2012-07-12 19:22:32