У меня есть UIViewController, который извлекается из стека навигации на iPhone и удаляется с помощью setRootViewController на iPad.
В обоих случаях UIViewController не удаляется, что означает, что к нему что-то привязано; это подтверждается регистрацией [self retainCount], равной двум, непосредственно перед pop или setRootViewController (по какой-то причине в ViewWillDisappear четыре).
UIView имеет аудио (используя Flite Text to Speech - который использует AVFoundation.framework) и анимацию.
То, что я должен искать, может увеличить количество сохраняемых данных в контроллере представления и помешать контроллеру представления быть вежливо освобожденным, как и должно быть.
Вот как представление помещается в стек представления или устанавливается как RootViewController;
-(IBAction)pushShare:(id)sender{
ShareViewController *shareViewController = [[ShareViewController alloc] initWithNibName:@"ShareViewController" bundle:nil];
NSLog(@"1. SVC Retain count %d", [shareViewController retainCount]);
[shareViewController setParentIsIpadMake:YES];
NSLog(@"2. SVC Retain count %d", [shareViewController retainCount]);
[shareViewController setStory:story];
NSLog(@"3. SVC Retain count %d", [shareViewController retainCount]);
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
StoryBotAppDelegate *appDelegate = (StoryBotAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.window setRootViewController:shareViewController];
NSLog(@"4. SVC Retain count %d", [shareViewController retainCount]);
} else{
[self.navigationController pushViewController:shareViewController animated:YES];
NSLog(@"4. SVC Retain count %d", [shareViewController retainCount]);
}
NSLog(@"releasing Svc...");
[shareViewController release];
NSLog(@"5. SVC Retain count %d", [shareViewController retainCount]);
}