Sto usando -performSelectorInBackground
in molte delle mie app, una sorta di ignaro a -detachNewThreadSelector
. Ora mi sto chiedendo quali sono le differenze tra i due. Sono praticamente intercambiabili, o ci sono differenze e luoghi in cui uno è superiore all'altro? Grazie!Differenza tra [NSThread detachNewThreadSelector:] e -performSelectorInBackground
risposta
Sono identici. Vedi documentation.
performSelectorInBackground: withObject: L'effetto di chiamare questo metodo è lo stesso se si chiama il detachNewThreadSelector: toTarget: withObject: metodo NSThread con l'oggetto, di selezione, e l'oggetto attuale del parametro come parametri.
Come dice Michael, sono identici. Penso che, per usare una discussione di performSelectorInBackground: withObject: sia più semplice di NSThread.
Tuttavia, NSThread in grado di controllare la sua priorità, stacksize, ecc Se si desidera personalizzare il comportamento, vi consiglio NSThread invece di performSelectorInBackground: withObject:.
interessanti voi ragazzi non possono segnalare eventuali differenze tra loro-
ti dirò questo molto. Abbiamo un'app per iPhone bloccata mentre abbiamo visualizzato l'icona di rivelazione "9" nella barra in alto e una finestra con scritto "Invio ..." mentre abbiamo inviato un file audio su un server e performSelectorInBackground:
NON stava funzionando. Quando abbiamo scambiato performSelectorInBackground
con detachNewThreadSelector
, ha funzionato bene, ma ora si lamenta che nessun oggetto autoreleased
in esecuzione in quel thread è soggetto ad essere rilasciato dal pool .. forse questo è perché il pool è nel thread principale?
penso che dovresti avere un pool di autorelease per ogni thread. –
Corey, se si sta utilizzando un nuovo thread e si sta utilizzando [autorelease degli oggetti], sarà necessario creare il proprio pool di autorelease. Abbastanza semplice da fare:
- (void)uploadDataOnThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// do something here...
[pool release];
}
Penso che sia '[pool drain]' –
release e drain sono quasi gli stessi: http://stackoverflow.com/a/799257/545726 – aiham
- 1. Qual è la differenza di base tra NSTimer, NSTask, NSThread e NSRunloop?
- 2. NSThread vs. NSOperationQueue vs. ??? su iPhone
- 3. selettore di chiamata con due argomenti su NSThread issue
- 4. La differenza tra $ * e $ @
- 5. Differenza tra $ # e $ {# @}
- 6. Differenza tra. e #
- 7. MySQL: Differenza tra ",", "e"
- 8. Differenza tra "o" e "||"
- 9. Differenza tra unwrapObservable e()
- 10. Differenza tra oggetto e *?
- 11. Differenza tra "**/* /" e "** /"?
- 12. Differenza tra jquery e $
- 13. CMake: differenza tra $ {} e "$ {}"
- 14. Differenza tra ". +" E ". +?"
- 15. VBA: Differenza tra & e +
- 16. Differenza tra numpy.logical_and e &
- 17. Differenza tra | = e^= css
- 18. Differenza tra `% in%` e `` ==
- 19. NSThread number su iOS?
- 20. Differenza tra Dizionario e Hashtable
- 21. Differenza tra SCM e SVN
- 22. differenza tra RDLC e SSRS
- 23. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 24. Differenza tra "\ n" e Environment.NewLine
- 25. Differenza tra QSharedPointer e QSharedDataPointer?
- 26. Differenza tra toFixed() e toPrecision()?
- 27. Differenza tra strncpy e memcpy?
- 28. Differenza tra crittografia e hashing
- 29. Differenza tra Assembly.CreateInstance e Activator.CreateInstance?
- 30. Differenza tra coredata e sqlite
che abbia un senso, dal momento che performSelectorInBackground: withObject: (NSThreadPerformAdditions) categoria è elencato sotto NSObject ... quindi scommetto che letteralmente è solo una chiamata a detachNewThreadSelector: toTarget: withObject: P – Sahil
prega ignorare il mio ultimo commento, stavo parlando attraverso il mio dietro. – Emmanuel