次のコードを使用して、オブジェクトをセカンダリ スレッドに渡しています。
(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];
}
私の質問は、autorelease はこのオブジェクトのリリースを処理する正しい方法ですか?. セカンダリ スレッドに渡されたら保持し、不要になったら解放します。
ただし、セカンダリ スレッドがオブジェクトを保持する前に、自動解放によってオブジェクトが解放される可能性はありますか? このために ivar を作成する必要がありますか? ログイン後にオブジェクトが不要になったため、ivar は適切な方法ではないようです。これを処理する最良の方法は何ですか? ありがとうございました。
-オスカー