我的应用程序在很长一段时间内在循环中发出大量URL请求(调用Web服务)。当我在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缓存时,我是在咆哮错误的树吗?还有什么呢?