Qual é a diferença entre addChildViewController e presentModelViewController

Eu sei que existem três maneiras de alterar a exibição no iOS

1

[self addChildViewController:thirdViewController]; 
[contentView addSubview:thirdViewController.view]; 

2

First * sVC = [[First alloc] initWithNibName:@"First" bundle:[NSBundle mainBundle]]; 
[self presentModalViewController:sVC animated:YES];

3

MyViewController *sampleViewController = [[[MyViewController alloc]initWithXXX] autorelease];       
[self.navigationController pushViewController: sampleViewController animated:true];

O pushViewController requer o controlador de navegação, o que eu entendo. No entanto, quando usar addChildViewController e presentModalViewController ??

questionAnswers(2)

yourAnswerToTheQuestion