как очистить память предыдущего ViewController - PullRequest
0 голосов
/ 03 апреля 2012

Я столкнулся с этой проблемой при тестировании приложения MCQ Game.

Я использую пользовательский переход ARC & Storyboard и [self performSegueWithIdentifier:@"VC" sender:self]; для перехода с ViewController1 на ViewController2, но очень редко возвращаюсь ViewController1 из-за особенностей приложения, переходя от вопроса к вопросу. приложение станет очень вялым после многократного нажатия. Каков наилучший способ решения проблемы?

Пользовательский переход:

-(void)perform {
    UIViewController *sourceVC = (UIViewController *) self.sourceViewController;
    UIViewController *destinationVC = (UIViewController *) self.destinationViewController;

    [UIView transitionWithView:sourceVC.navigationController.view duration:0.5
                       options:UIViewAnimationOptionTransitionCrossDissolve
                    animations:^{
                        [sourceVC.navigationController pushViewController:destinationVC animated:NO];
                                           }
                    completion:^(BOOL  completed)
                    {     

                        //[sourceVC.navigationController pushViewController:destinationVC animated:NO];
                    }                      
                    ];



}

Ответы [ 2 ]

1 голос
/ 05 апреля 2012

Я изменил пользовательский переход с push на pop, основываясь на моем имени контроллера представления, и это работает :)

-(void)perform {
    UIViewController *sourceVC = (UIViewController *) self.sourceViewController;
    //UIViewController *destinationVC = (UIViewController *) self.destinationViewController;

    NSInteger index = -1;
    NSArray* arr = [[NSArray alloc] initWithArray:sourceVC.navigationController.viewControllers];
    for(int i=0 ; i<[arr count] ; i++)
    {
        if([[arr objectAtIndex:i] isKindOfClass:NSClassFromString(@"mainViewController")])
        {
            index = i;
        }       
    }    

    [UIView transitionWithView:sourceVC.navigationController.view duration:0.5
                       options:UIViewAnimationOptionTransitionCrossDissolve
                    animations:^{

                        [sourceVC.navigationController popToViewController:[arr objectAtIndex:index] animated:NO];

                    }
                    completion:^(BOOL  completed)
     {     

         //[sourceVC.navigationController pushViewController:destinationVC animated:NO];
     }                      
     ];



}
1 голос
/ 03 апреля 2012

Я подозреваю, что происходит сильный референтный цикл.Запустите Leaks, чтобы убедиться, что предыдущий контроллер представления не имеет надежной ссылки после нажатия на новый.

...