ich ein Objekt zu einem sekundären Thread bin vorbei mit dem folgenden Code:Wann soll ein Objekt freigegeben/behalten werden, das an einen sekundären Thread übergeben wird?
(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];
}
Meine Frage ist, Autofreigabe der richtige Weg ist, die Freigabe dieses Objekts zu behandeln ?. Sobald es an den sekundären Thread übergeben wurde, behalte ich es und gebe es frei, wenn ich es nicht mehr brauche.
Allerdings ist es möglich, dass die Autorelease, das Objekt freigibt, bevor der sekundäre Thread eine Chance hat, es zu behalten ?. Muss ich dafür einen ivar anlegen, damit ich das Objekt im performSelectorOnMainThread freigeben kann? Ich brauche das Objekt nach dem Login nicht mehr, also scheint ein ivar nicht der richtige Weg zu sein. Was ist der beste Weg, damit umzugehen? Vielen Dank.
-Oscar
Vielen Dank, hätte in der Dokumentation nachgeschaut =). –