2013-02-28 8 views
1

J'essaie d'obtenir un film mp4 à jouer dans un UICollectionViewCell. Je n'ai pas de chance pour l'afficher. Donc, ma première question est: est-ce possible? Si oui, qu'est-ce que je fais de mal? C'est un projet non-ARC et je ne suis pas utiliser de XIBs ou storyboards ...MPMoviePlayerController dans UICollectionViewCell

NSURL * theURL = nil; 
NSBundle * bundle = [NSBundle mainBundle]; 
if (bundle) 
{ 
    NSString * thePath = [bundle pathForResource:@"intro" ofType:@"mp4"]; 
    if (thePath) 
    { 
     theURL = [NSURL fileURLWithPath:thePath]; 
    } 
} 

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: theURL]; 
[player prepareToPlay]; 
[player.view setFrame: self.contentView.bounds]; // player's frame must match parent's 
[self.contentView addSubview: player.view]; 
[player play]; 
[player release]; 
+0

Placez le lecteur dans un @property et vérifiez-le. Ne le relâchez pas après la lecture. – iDev

Répondre

1

Me semble vous libérer le joueur il est donc d'être désallouée.

Commentez la dernière version et voyez si cela la corrige. Si oui, vous devrez sauvegarder la référence quelque part (membre ivar/propriété de la cellule?) Et la relâcher plus tard.

+0

Je ne sais pas si cela va le réparer: l'appel 'release' décrémentera le nombre de retain, mais il a déjà ajouté le joueur comme une sous-vue, donc le nombre de retain ne sera pas nul et ne sera donc pas libéré le joueur quitte la superview. Je suis d'accord pour libérer ce n'est pas bon, mais il pourrait y avoir quelque chose d'autre en jeu. – lxt

+1

il a ajouté la vue du joueur comme sous-vue. cela ne tient pas le contrôleur de joueur en mémoire. – TomSwift

+0

Très vrai, mon mauvais. Pardon. – lxt