NSURLConnectionを保持する「ServerDataLayer」という名前のクラスと、受信したHTTPデータを書き込むNSMutableDataがあります。接続が終了すると、呼び出し元が自分自身を参照として渡したデリゲートを起動するだけです。メソッドは次のようになります。
-(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」を使用してリクエストをインスタンス化し、この2番目のリクエストのスコープを失ったため、「autorelease」を設定しています。NSURLConnectionが内部でリクエストを実行している間、この2番目のリクエストはメモリに残りますか?
この種のプロセスのオブジェクト参照を管理する方法について、この時点で少し迷っています。どんな助けでもいただければ幸いです。