Ios 手势识别器:应要求手动手势识别器崩溃

Ios 手势识别器:应要求手动手势识别器崩溃,ios,iphone,uigesturerecognizer,nszombie,Ios,Iphone,Uigesturerecognizer,Nszombie,我的视图控制器上有一个手势识别器,用于滑入/滑出导航栏。不幸的是,有一个坏的NSZombie,当我滑动到上一个控制器时,它会使整个应用程序崩溃。跟踪非常困难,因为它只发生在特定的视图控制器中 以下是错误: [MyViewController gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:]: message sent to deallocated instance 这是我的代码: - (void)viewDidLoad

我的视图控制器上有一个手势识别器,用于滑入/滑出导航栏。不幸的是,有一个坏的NSZombie,当我滑动到上一个控制器时,它会使整个应用程序崩溃。跟踪非常困难,因为它只发生在特定的视图控制器中

以下是错误:

[MyViewController gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:]: message sent to deallocated instance 
这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pgr:)];
    pgr.delegate = self;
    [self.view addGestureRecognizer:pgr];
}

- (void)pgr:(UIPanGestureRecognizer *)gesture {
    // Check if this is the first touch
    if (gesture.state == UIGestureRecognizerStateBegan) {
        CGPoint point = [gesture locationInView:gesture.view];
        self.start = point.y;
    }

    CGPoint point = [gesture locationInView:gesture.view];
    self.currentX = point.x;
    self.offsetY = point.y - self.start;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    if ([gestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {
        return YES;
    }

    return NO;
}

委托方法是

- (BOOL)shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
尝试使用

- (BOOL)shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    if ([otherGestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) {
        return YES;
    }

    return NO;
}

相关代码是实例化MyViewController的地方。在这里,您没有创建对它的强引用,因此viewController被过早释放。我使用故事板。如何控制视图控制器的分配?这不是UIGestureRecognitizerDelegate中的方法。。。。刚刚在标题中签出。请参阅Apple文档