2010-01-19 6 views

Respuesta

31

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.

+0

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

+0

favor ignore mi último comentario, estaba hablando a través de mi trasero. – Emmanuel

5

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:.

2

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?

+2

creo que debería tener un grupo de autorrelease para cada hilo. –

3

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]; 
} 
+0

Creo que es '[pool drain]' –

+0

versión y drenaje son casi los mismos: http://stackoverflow.com/a/799257/545726 – aiham

Cuestiones relacionadas