尝试调用[UITableView panGestureRecognizer]时获取EXC_BAD_ACCESS

时间:2012-09-24 16:58:08

标签: uitableview memory-management uiscrollview uigesturerecognizer ios6

刚刚将xCode升级到4.5。 iOS 5仍然是我的部署目标,但Base SDK现在是6.0。

现在应用程序崩溃了之前没有的地方。该项目使用ARC。

违规行是UITableView上的属性调用...要求panGestureRecognizer(下面的第3行)。

-(void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];    
        UIPanGestureRecognizer* pgr = [imageTableView panGestureRecognizer];
        [pgr setMinimumNumberOfTouches:2];
        [pgr setMaximumNumberOfTouches:2];
}

产生以下错误消息:

- [UIScrollViewPanGestureRecognizer retain]:发送到解除分配的实例0x1ea38f70的消息

这怎么可能? Zombie Analysis说,gestureRecognizer已经发布了吗?!

1 个答案:

答案 0 :(得分:0)

原来这是一个ARC问题......对于那些感兴趣的人来说,这是两种不同的解决方案。

@autoreleasepool {
    UIPanGestureRecognizer* pgr = [imageTableView panGestureRecognizer];
    [pgr setMinimumNumberOfTouches:2];
    [pgr setMaximumNumberOfTouches:2];    
}

或者

[imageTableView.panGestureRecognizer setMinimumNumberOfTouches:2];
[imageTableView.panGestureRecognizer setMaximumNumberOfTouches:2];

经验教训,如果不可能......尝试将ARC作为罪魁祸首。