Я передаю объект во вторичный поток, используя следующий код:
(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];
}
У меня такой вопрос, является ли авто-релиз верным способом справиться с выпуском этого объекта? Когда он передается во вторичный поток, я сохраняю его и освобождаю, когда он мне больше не нужен.
Однако возможно ли, что автоматическое освобождение освобождает объект до того, как вторичный поток сможет его сохранить? Нужно ли создавать для этого ивар ?, чтобы я мог освободить объект в executeSelectorOnMainThread ?. Я больше не нуждаюсь в объекте после входа в систему, поэтому ивару не кажется правильным путем. Каков наилучший способ справиться с этим? Спасибо.
-Oscar