Lavorando con un po 'di codice, mi imbatto in loop di esecuzione, di cui sono nuovo, all'interno di NSOperation
s.Utilizzo di NSThread sleep in una NSOperation
Gli NSOperation
s sono occupati a scaricare dati e, mentre sono occupati, c'è il codice per attendere il completamento del download, sotto forma di NSRunLoop
se thread sleep.
Questo codice, in particolare, è di interesse per me:
while (aCertainConditionIsTrue && [self isCancelled]==NO) {
if(![[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]){
[NSThread sleepForTimeInterval:1.0];
}
}
ho letto sui cicli visione e runMode:beforeDate:
aspetteranno per una sorgente d'ingresso o di un timeout. Anche se non sono al 100% ciò che conta come input souce.
Alla prima esecuzione di questo restituisce sempre NO e raggiunge lo sleepForTimeInterval:
. È cattivo?
In una particolare classe di utilità, colpisce lo sleepForTimeInterval:
molto - una volta per ogni thread - che danneggia significativamente le prestazioni.
Qualche soluzione migliore per questo o un consiglio?