2 lignes signifient qu'il ne fonctionnera pas sur iPad
-
26-09-2020 - |
Question
Nous avons un projet qui fonctionne bien sur OS4 mais nous avons des problèmes pour le faire fonctionner sur iPad 3.2.
Le SDK de base est 4.0 et la cible de déploiement est 3.2.
Le code plante sur le simulateur iPad (et l'appareil) avant même qu'il ait démarré, avec l'erreur
"Formatrices de données temporairement indisponibles"
Cela semble fonctionner correctement si je supprime 2 lignes...
AVURLAsset* asset = [AVURLAsset URLAssetWithURL:assetURL options:options];
et
export = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough];
Je branche selon quel OS est présent pour que ces lignes ne jamais être atteint sur un appareil 3.2 (je sais qu'ils sont OS4), mais le simple fait qu'ils soient là fait planter la chose avant même qu'elle ne commence.
Des idées?Acclamations
La solution
Si ces lignes ne sont jamais atteintes sur l'iPad, vous pouvez rencontrer un problème du fait de ne pas faibles relier le cadre d'avexte (et potentiellement d'autres).Parce que Avurlasset et Avasseetexportsession n'existent pas comme des symboles de 3.2, votre demande peut s'écraser sur le démarrage sur cet ancien système d'exploitation.
Je décris comment faibles lier un cadre en réponse à un Problème similaire dans Cette réponse .
Autres conseils
Tout d'abord, "Data Formatters temporairement indisponibles" est un message GDB, c'est pas pourquoi votre application plante.Plus d’informations concernant ce message peuvent être trouvées ici.
Vous devez vérifier la disponibilité des classes pendant l'exécution (et non lors de la compilation) si vous souhaitez écrire du code qui s'exécute à la fois sur iOS 3.0 et 4.0.
Vous pouvez le faire en utilisant le NSClassFromString
fonctionne comme ceci :
if (NSClassFromString(@"AVURLAsset")) {
// 4.0 code using AVURLAsset goes here
} else {
// 3.0 code goes here
}
Essayez ceci (ou similaire):
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 40000
// code for iOS below 4.0
#else
// code for iOS 4.0
#endif
volé de cette question .