¿Cuál es la diferencia entre addChildViewController y presentModelViewController?

Sé que hay tres formas de cambiar la vista en 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];

pushViewController requiere el controlador de navegación, que entiendo. Sin embargo, ¿cuándo usar addChildViewController y presentModalViewController?

Respuestas a la pregunta(2)

Su respuesta a la pregunta