2

Lors du test de mon application, j'ai découvert qu'il s'est écrasé sur un iPhone avec OS 3.0.1 et 3.1.1 (iPod Touch).MPMoviePlayerViewController se bloque sur OS 3.0

J'ai le code suivant pour lire la vidéo qui est placée sur un serveur distant. Il fonctionne parfaitement sur iOS 4.0 et iPad avec OS 3.2.

Xcode est configuré pour utiliser SDK 4.0 mais le système d'exploitation cible est 3.0.

NSURL *url = [NSURL URLWithString:selectedLink]; 
MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 
[self presentMoviePlayerViewControllerAnimated:moviePlayer]; 
[moviePlayer release]; 

Lorsqu'il est exécuté sur 3.0.1 et 3.1.1 Je reçois l'erreur suivante:

-[UIViewController presentMoviePlayerViewControllerAnimated:]: unrecognized selector sent to instance 0x231550 
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: -[UIViewController presentMoviePlayerViewControllerAnimated:]: unrecognized selector sent to instance 0x231550' 

vous espérez les gars peuvent me aider. MPMoviePlayerViewController a été ajouté récemment et est disponible dans iPhone OS 3.2 et versions ultérieures.

Répondre

5

Vous devez utiliser MPMoviePlayerController.

+5

a résolu le problème en utilisant: si ([auto respondsToSelector @selector (presentMoviePlayerViewControllerAnimated :)]) {// La nouvelle façon de lire des films} else {// L'ancienne façon de jouer des films} – mbogh

+0

fantastiques! OK, peut-être ignorant suivi question venir ici, et je pense qu'il est lié à ce test objneodude vient de partager: Je sais que je peux vérifier les sélecteurs, et c'est génial et tout, mais est-il un moyen pour moi de vérifier si un _Class_ est prise en charge? Par exemple, étant donné une application avec un SDK de base de 4.0, mais qui peut être exécuté sur 3.0+, il est possible d'allouer/init un MPMoviePlayerViewController. (Cela ne fonctionnera pas non plus, mais vous pouvez l'instancier!) Peut-être que la seule vérification d'intégrité est de tester les propriétés de cette classe? Je pourrais regarder les versions de SDK, mais je sens qu'il n'est pas toujours sage de faire cela. Pensées? –