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



刚刚将xCode升级到4.5。 iOS 5 仍然是我的部署目标,但基本 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的消息

这怎么可能? 僵尸分析说手势识别器已经发布?!

原来这是一个 ARC 问题...为感兴趣的人提供两种不同的解决方案。

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

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

吸取教训,如果不可能的话......尝试ARC作为罪魁祸首。

相关内容

最新更新