私のアプリは、(Web サービスを呼び出す) 多数の URL 要求をループで長時間実行します。Allocations ツールでアプリを見ると、そのループの実行中にメモリ消費量が継続的に増加していることがわかります。テスト目的で、ループを次のように縮小しました。これは同じ動作を示します。
NSURL *myUrl = [[NSURL alloc] initWithString:@"http://my.server.com/webservice"];
NSURLRequest request = [[NSURLRequest alloc] initWithURL:myUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
while (1)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSURLResponse *response = nil;
NSError *error = nil;
NSData *rawResponse = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[pool release];
}
この問題を最初に発見したとき、URL 要求/応答がキャッシュされていたためだと考えました。そのとき、 を追加しました[[NSURLCache sharedURLCache] removeAllCachedResponses]
。私は、Web サービスを呼び出すたびにキャッシュをクリアし、URL キャッシュの目的で使用されているメモリを解放することを期待していました。運がない。
私は何か間違ったことをしているに違いありませんが、それを見つけることができません。URL キャッシュだと思って間違ったツリーを鳴らしているのでしょうか? 他に何がありますか?