我将使用以下代码将对象传递给辅助线程:
我的问题是,使用自动释放池是否是处理该对象释放的正确方式?一旦它被传递到次要线程,我会对其进行保留,并在不再需要时释放它。
然而,自动释放池是否可能在次要线程有机会保留它之前就释放了该对象?我是否需要为此创建一个实例变量?这样我就可以在performSelectorOnMainThread中释放该对象。我在登录后不再需要该对象,因此实例变量似乎不是正确的选择。如何最好地处理这个问题?谢谢。
-Oscar
我将使用以下代码将对象传递给辅助线程:
(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];
}
我的问题是,使用自动释放池是否是处理该对象释放的正确方式?一旦它被传递到次要线程,我会对其进行保留,并在不再需要时释放它。
然而,自动释放池是否可能在次要线程有机会保留它之前就释放了该对象?我是否需要为此创建一个实例变量?这样我就可以在performSelectorOnMainThread中释放该对象。我在登录后不再需要该对象,因此实例变量似乎不是正确的选择。如何最好地处理这个问题?谢谢。
-Oscar