Ios 僵尸对象,RequireGestureRecognitizerToFail,为什么?
我有两个VC,都有一个UICollectionView,在其中一个(称为VC1)中我添加了一个 现在,通过应用程序生命周期,用户可以从该VC1切换到另一个VC2。 在这种情况下,我会崩溃,如果我加载应用程序并转到VC2,但从未点击VC1,这种情况永远不会发生。因此,在浪费了宝贵的时间弄清楚如何调试之后,我在仪器中运行了僵尸程序,并发现Ios 僵尸对象,RequireGestureRecognitizerToFail,为什么?,ios,objective-c,nszombie,Ios,Objective C,Nszombie,我有两个VC,都有一个UICollectionView,在其中一个(称为VC1)中我添加了一个 现在,通过应用程序生命周期,用户可以从该VC1切换到另一个VC2。 在这种情况下,我会崩溃,如果我加载应用程序并转到VC2,但从未点击VC1,这种情况永远不会发生。因此,在浪费了宝贵的时间弄清楚如何调试之后,我在仪器中运行了僵尸程序,并发现 [aRecognizer requireGestureRecognizerToFail:lpgr]; 是问题所在,尽管这条线在 viewdidload
[aRecognizer requireGestureRecognizerToFail:lpgr];
是问题所在,尽管这条线在
viewdidload
对于VC1,如果我从VC1移动到VC2,这将被调用
我禁用了该段,我的代码运行良好,我只是不知道为什么会发生这种情况 不应创建与对象本身的依赖关系。 由于您已经将手势识别器lpgr添加到collectionview,因此在for循环中,可以在lpgr本身中创建不良的依赖关系 像这样重写它
// Make the default gesture recognizer wait until the custom one fails.
for (UIGestureRecognizer* aRecognizer in [self.collectionView gestureRecognizers]) {
if ([aRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
[aRecognizer requireGestureRecognizerToFail:lpgr];
}
[self.collectionView addGestureRecognizer:lpgr];
// Make the default gesture recognizer wait until the custom one fails.
for (UIGestureRecognizer* aRecognizer in [self.collectionView gestureRecognizers]) {
if ([aRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
[aRecognizer requireGestureRecognizerToFail:lpgr];
}
[self.collectionView addGestureRecognizer:lpgr];