estoy pasando un objeto a un subproceso secundario usando el siguiente código:¿Cuándo liberar/retener un objeto que se pasa a un subproceso secundario?
(void)login:(id)sender
{
platformMsgs_LoginRequest *loginRequest = [[[platformMsgs_LoginRequest alloc] init] autorelease];
//more code...
[NSThread detachNewThreadSelector:@selector(sendLoginRequest:) toTarget:self withObject:loginRequest];
//more code...
}
- (void)sendLoginRequest:(platformMsgs_LoginRequest *)loginRequest
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[loginRequest retain];
NetSuiteBinding *binding = [NetSuiteServiceSvc NetSuiteBinding];
NetSuiteBindingResponse *response = [binding loginUsingParameters:loginRequest applicationInfo:nil partnerInfo:nil];
[self performSelectorOnMainThread:@selector(loginOperationCompleted:) withObject:response waitUntilDone:NO];
[loginRequest release];
[pool drain];
}
Mi pregunta es, ¿autorelease la forma correcta de manejar la liberación de este objeto ?. Una vez que se pasa al hilo secundario lo retengo y lo libero cuando ya no lo necesito.
Sin embargo, ¿es posible que la liberación automática libere el objeto antes de que el hilo secundario tenga la posibilidad de retenerlo ?. ¿Tengo que crear un ivar para esto ?, de modo que pueda liberar el objeto en performSelectorOnMainThread ?. Ya no necesito el objeto después del inicio de sesión, por lo que un ivar no parece ser el camino correcto. ¿Cuál es la mejor manera de manejar esto ?. Gracias.
-Oscar
Gracias, debería haber buscado en la documentación =). –