He estado usando -performSelectorInBackground
en muchas de mis aplicaciones, sin prestar atención al -detachNewThreadSelector
. Ahora me pregunto cuáles son las diferencias entre los dos. ¿Son bastante intercambiables, o hay diferencias y lugares donde uno es superior al otro? ¡Gracias!Diferencia entre [NSThread detachNewThreadSelector:] y -performSelectorInBackground
Respuesta
Son idénticos. Ver documentation.
performSelectorInBackground: withObject: El efecto de llamar a este método es el mismo que si se llama a la detachNewThreadSelector: toTarget: withObject: Forma de NSThread con el objeto, selector, y el objeto de parámetro actual como parámetros.
Como dice Michael, son idénticos. Creo que para usar un hilo por performSelectorInBackground: withObject: es más fácil que NSThread.
Sin embargo, NSThread puede controlar su prioridad, stacksize, etc. Si desea personalizar el comportamiento, recomiendo NSThread en lugar de performSelectorInBackground: withObject:.
interesantes ustedes no pueden señalar las diferencias entre ellos-
Me voy a decir esto mucho. Tenemos una aplicación de iPhone que se estaba bloqueando mientras mostramos el ícono de divulgación "actividad de Internet" en la barra superior y una ventana que decía "Enviando ..." mientras enviamos un archivo de audio a un servidor y performSelectorInBackground:
no estaba funcionando. Cuando intercambiamos performSelectorInBackground
con detachNewThreadSelector
, funcionó bien, pero ahora se queja de que los objetos autoreleased
que se ejecutan en ese hilo están sujetos a ser liberados por el grupo ... ¿quizás esto se deba a que el grupo está en el hilo principal?
creo que debería tener un grupo de autorrelease para cada hilo. –
Corey, si está ejecutando un nuevo hilo y está utilizando [liberación automática del objeto], tendrá que crear su propio grupo de autorrelease. Bastante simple de hacer:
- (void)uploadDataOnThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// do something here...
[pool release];
}
Creo que es '[pool drain]' –
versión y drenaje son casi los mismos: http://stackoverflow.com/a/799257/545726 – aiham
- 1. ¿Cuál es la diferencia entre + [NSThread detachNewThreadSelector: toTarget: withObject:] y - [NSObject performSelectorInBackground: withObject:]?
- 2. Diferencia entre performSelector, performSelectorOnMainThread y performSelectorInBackground
- 3. ¿cuál es la diferencia entre sleep(), usleep() y [NSThread sleepForTimeInterval:]?
- 4. interacción NSThread y UIViewController
- 5. NSThread VS pthreads
- 6. NSThread vs. NSOperationQueue vs. ??? en el iPhone
- 7. Administración de la memoria y performSelectorInBackground:
- 8. performSelectorInBackground con múltiples parametros
- 9. Grand Central Dispatch vs NSThread
- 10. MySQL: diferencia entre ', `,' y"
- 11. Diferencia entre objeto y *?
- 12. Diferencia entre. y #
- 13. ¿Diferencia entre == y caso?
- 14. La diferencia entre $ * y $ @
- 15. Diferencia entre & y &
- 16. VBA: Diferencia entre y y +
- 17. selector de llamadas con dos argumentos en NSThread problema
- 18. Diferencia entre -Wconversion entre gcc y g ++
- 19. NSThread con _NSAutoreleaseNoPool error
- 20. Diferencia entre subprocess.Popen y os.system
- 21. Diferencia entre decimal y decimal
- 22. ¿Diferencia entre trazo y relleno?
- 23. Diferencia entre interrupción y eventos
- 24. Diferencia entre netTcpContextBinding y netTcpBinding
- 25. ¿Diferencia entre brújula y sass?
- 26. Diferencia entre "__method__" y "método"
- 27. Diferencia entre Mealy y Moore
- 28. Diferencia entre HashSet y HashMap?
- 29. diferencia entre ajax y enviar
- 30. Diferencia entre sistema y shell_exec
Eso tiene sentido, ya performSelectorInBackground: withObject: aparece bajo NSObject (NSThreadPerformAdditions) categoría ... así que apuesto a que literalmente es sólo una llamada a detachNewThreadSelector: toTarget: withObject: P – Sahil
favor ignore mi último comentario, estaba hablando a través de mi trasero. – Emmanuel