Возникли некоторые основные проблемы с управлением общей памятью при добавлении и удалении контроллера uiview, но только когда я добавляю к нему анимацию с помощью CAtransition. Я создал простой сценарий ниже ситуации:
У меня есть базовый контроллер представления, который я инициализирую/распределяю по имени IVC, и я добавляю к текущему uiController: В заголовочном файле он просто объявлен:
IntroViewController* IVC;
В НАЧАЛЕ: 3 МБ общей памяти, показанной в утечках
3,6 Мб общей памяти
IVC=[[IntroViewController alloc] initWithNibName:@"Intro" bundle:[NSBundle mainBundle]];
[IVC.view setUserInteractionEnabled:YES];
[self.view addSubview:IVC.view];
затем я выпускаю:
[[IVC.view layer] removeAllAnimations];
[IVC.view removeFromSuperview];//remove intro animation
[IVC release];
как и ожидалось, общая память возвращается к 3 МБ
но когда я удаляю код выпуска и добавляю следующее, чтобы появилось постепенное появление, а затем выпустить объект, показанный здесь:
CATransition *applicationIntroLoadViewIn = [CATransition animation];
[applicationIntroLoadViewIn setDuration:.5];
[applicationIntroLoadViewIn setType:kCATransitionReveal];
[applicationIntroLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[applicationIntroLoadViewIn setValue:@"IntroFadeIn" forKey:@"IntroAnimation"];
[applicationIntroLoadViewIn setDelegate:self];
[[IVC.view layer] addAnimation:applicationIntroLoadViewIn forKey:nil];
а потом :
я создаю метод для обработки, когда анимация закончилась:
- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)flag{
NSString* value = [animation valueForKey:@"IntroAnimation"];
if ([value isEqualToString:@"IntroFadeIn"]){
//this def gets called NSLog shows up
[[IVC.view layer] removeAllAnimations];
[IVC.view removeFromSuperview];//remove intro animation
[IVC release];
IVC=nil;
}
сообщений об утечках нет, представление удалено, но памяти в утечках по-прежнему остается 3,6 МБ? ЛЮБАЯ причина, по которой это могло произойти? Я не выделяю анимацию *, поэтому я чувствую, что ее не нужно очищать, но это говорит о том, что что-то все еще держится за мое представление IVC.
Любая помощь очень ценится.