Ваш код содержит несколько утечек памяти.
Строка, выделенная здесь, никогда не освобождается, потому что вы устанавливаете ее на ноль непосредственно перед выпуском.
NSString* s = [[NSBundle mainBundle] pathForResource:videoName ofType:@"mp4"];
s = nil;
[s release];
Вы не отпускаете MPMoviePlayerViewController при вызове метода playVideoAtURL
-(void)playVideoAtURL:(NSURL *)theURL
{
// YOU HAVE MEMORY LEAK IN NEXT LINE!!!
theMovie = [[MPMoviePlayerViewController alloc] initWithContentURL:theURL];
...
}
Поэтому, если фильм не закончен, вы выделяете новый экземпляр MPMoviePlayerViewController и не выпускаете предыдущий.