Attualmente sto programmando un'app che estrae i fotogrammi da un clip filmato. L'ho progettato in modo che l'estrazione venga eseguita su una filettatura separata per impedire il congelamento dell'applicazione. Il processo di estrazione in sé richiede molte risorse, ma funziona bene se usato nel simulatore. Tuttavia, ci sono problemi quando lo costruisci per l'iPad. Quando eseguo un'altra azione (sto dicendo al mio riproduttore AV di suonare mentre estraggo i frame), il thread inaspettatamente smette di funzionare, e credo che venga ucciso.Il thread viene ucciso dall'OS
Suppongo sia perché sto usando molte risorse, ma non del tutto sicuro.
Ecco le mie domande: 1. Come posso sapere se/perché il mio thread si arresta? 2. Se si tratta davvero di un'ulteriore elaborazione, cosa devo fare? Ho davvero bisogno che questa azione sia implementata.
Heres alcuni im codice utilizzando: Per creare il filo:
[NSThread detachNewThreadSelector:@selector(startReading) toTarget:self withObject:nil];
vi posterò tutte le informazioni necessarie, Grazie mille!
Aggiornamento Attualmente sto utilizzando GCD e compila i thread per me. Tuttavia il sistema operativo uccide ancora i thread.
So esattamente quando succede. quando dico al mio [gioco di AVplayer]; uccide il filo.
Questo problema sta accadendo solo nel reale iPad e non sul simulatore
Se si deve chiedere, provare invece a utilizzare un'astrazione di livello superiore, come le code di invio (GCD) o le code di operazioni (NSOperationQueue).Vedi [The Move Away from Threads] (http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/doc/uid/TP40008091-CH100- SW8) per una discussione estesa o cercare un esempio [GCD] (http://stackoverflow.com/questions/7941860/#7941898) o [NSOperationQueue] (http://stackoverflow.com/questions/830218/). È roba molto utile. – Jano
la tua app si arresta in modo anomalo? se sì, cosa dice il rapporto sul crash? sei sicuro che AVPlayer sia protetto da thread? perché se stai chiamando [riproduzione di AVplayer] e accedendo allo stesso tempo in un thread in background, questo potrebbe essere il problema. – JeanLuc
Il thread di estrazione è in esecuzione come thread in background? Sto imparando Objective-C ma, se si è in grado di eseguirlo come thread in background può aiutare a non essere ucciso dal sistema operativo. –