Как я могу избежать утечки с помощью этой последовательности анимации на основе блоков? - PullRequest
1 голос
/ 23 июня 2010

Я работаю над анимацией небольших подпредставлений в моем интерфейсе с помощью флип-перехода.Чтобы заставить переход Flip работать правильно, я создаю временный UIView для предоставления контекста, запускаю переход, а затем должен выполнить очистку.Но я не могу понять, как освободить объект без сбоя приложения.Вот код блока:

UIView *tempContainer = [UIView alloc];
tempContainer = [self.view viewWithTag:700];

[UIView transitionWithView:tempContainer
        duration:2
        options:UIViewAnimationOptionTransitionFlipFromRight
        animations:^{ 
                    [[[tempContainer subviews] objectAtIndex:0] removeFromSuperview]; 
                    [tempContainer addSubview:newImageView];
                    [newImageView release];
                    } 
            completion:^(BOOL finished){
                    [tempContainer release]; //Crashes app
                    }];

Я использую блочную анимацию для iOS4.Проблема в том, что у моего tempContainer определенно течет, но если я освобождаю или автоматически выпускаю его в блоке завершения, мое приложение падает, и я делаю это после сообщения [UIView transition ...], оно падает.Какой лучший способ реорганизовать это, чтобы я не вытекла из моей памяти?(У меня есть 30 из этих маленьких вещей, чтобы сделать.)

1 Ответ

1 голос
/ 23 июня 2010

Утечка, потому что после +alloc -ed

UIView *tempContainer = [UIView alloc];

Вы немедленно переопределите это.

tempContainer = [self.view viewWithTag:700];

Вылетает, когда вы -release, потому что у вас нет главного представления ([self.view viewWithTag:700]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...