我有一个名为“ServerDataLayer”的类,它包含一个 NSURLConnection 和一个 NSMutableData,它将接收到的 HTTP 数据写入其中。当连接完成时,它只是触发一个委托,我的调用者将自己作为引用传递,该方法如下所示:
-(void) serverDataLayerResponse:(id)entity
{
if ([entity isMemberOfClass:[LoginResponse class]])
{
LoginResponse *response = (LoginResponse*)entity;
NSLog(@"Error Code: %d", response.errorCode);
NSLog(@"Error Message: %@", response.errorMessage);
NSLog(@"Registered: %c", response.registered);
NSLog(@"AuthToken: %@", response.authToken);
[AppData shared].authToken = response.authToken;
ServerDataLayer *request = [[[ServerDataLayer alloc] initWithServer:_serverUrl delegate:self] autorelease];
[request getPlayerDetails];
//[_server getPlayerDetails];
}
}
这是我的问题...内部 _receivedData 和 _connection 变量当前正在使用中,而此委托方法正在进行中。我想使用我的同一个 ServerDataLayer 实例从“[_server getPlayerDetails]”触发另一个请求,但是内部的 _connection 和 _receivedData 变量被覆盖了,我陷入了关于何时在正确的时间保留/释放的混乱。
所以我的工作只是在每次我想与服务器交谈时实例化 ServerDataLayer。现在......在上面的示例中,我正在使用“alloc”实例化请求,并设置“autorelease”,因为我失去了第二个请求的范围。这第二个请求会在 NSURLConnection 忙于内部执行请求时保留在内存中吗?
在这一点上,我对如何管理此类过程的对象引用有点迷茫。任何帮助,将不胜感激。