线程1:EXC_BAD_ACCESS(代码= 1)当使用集合解除视图控制器时

时间:2013-10-22 23:41:05

标签: ios iphone objective-c cocoa-touch uicollectionview

我已经直接在库的github页面(https://github.com/lxcid/LXReorderableCollectionViewFlowLayout/issues/43)上发布了这个问题,但我想我会在这里获得更多曝光。

我按如下方式实现了库:

LXReorderableCollectionViewFlowLayout *layout = [[LXReorderableCollectionViewFlowLayout alloc] init];
[collection setCollectionViewLayout:layout];

其中collection是我手动转到的UIViewController中的UICollectionView。使用itemAtIndexPath:fromIndexPath willMoveToIndexPath:toIndexPath函数,拖放和重新排序工作正常。

但是,只要我解除视图控制器:

[self dismissViewControllerAnimated:YES completion:nil];

我遇到线程1:EXEC_BAD_ACCESS(code = 1)错误。

此处发生错误:

@autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}

和bt显示:

frame #0: 0x019130b2 libobjc.A.dylib`objc_msgSend + 14
frame #1: 0x01bab735 CoreFoundation`-[NSSet makeObjectsPerformSelector:withObject:] + 277
frame #2: 0x0087f902 UIKit`-[UIGestureRecognizer dealloc] + 127
frame #3: 0x008952a5 UIKit`-[UILongPressGestureRecognizer dealloc] + 174

其他人遇到的类似问题(https://github.com/lxcid/LXReorderableCollectionViewFlowLayout/issues/32)有回复:

  

发生崩溃是因为从集合视图中删除布局时,永远不会删除已在集合视图上设置的手势识别器。因此,当手势发生时,识别器会尝试在已经解除分配的布局上调用委托方法gestureRecognizerShouldBegin:。

但我不确定这意味着什么或如何解决它,如果它是同一个问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我仍然不确定是什么导致这种情况,但我通过更改为github源而不是使用cocoapods解决了这个问题。我的cocoapod版本是0.1.0.beta1(我从https://www.cocoacontrols.com/controls/lxreorderablecollectionviewflowlayout获得),我猜它已经过时了。