PopViewController странное поведение

Из-за странного запроса, который я пытался отклонить, но он не работал, мне пришлось переопределить кнопку возврата навигационной панели.

Я сделал пользовательский подкласс UINavigationController и взломал- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item метод.

Вот мой код:

@interface CustomUINavigationController ()

@end

@implementation CustomUINavigationController


#pragma mark - UINavigationBar delegate methods

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item {

    if ([[self.viewControllers lastObject] isKindOfClass:[ViewController1 class]]) {
        ViewController1 *vc1 = (ViewController1 *)[self.viewControllers lastObject];
        [vc1 handleBackAction];
        if (vc1.canPopVC == YES) { 
            [self popViewControllerAnimated:YES];
            return YES;
        } else {
            return NO;
        }
    }

    [self popViewControllerAnimated:YES];
    return YES;
}

@end

Все работает нормально, за исключением случаев, когда я выкидываю viewController программно. Приложение зависало каждый раз, когда я хотел выполнить толчок после указанного всплывающего окна. ПревращениеNSZombie on, показал, что при программном вызове viewController его родительский viewController освобождается. На этом этапе создание пользовательского backButton не является вариантом, так как он потеряет встроенную функцию iOS 7 для функции popViewController.

Журнал аварии:

*** -[ContactsDetailViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x1806b790

Ответы на вопрос(4)

Ваш ответ на вопрос