我一直在上传speedtest功能,最近已转换为ARC内存泄漏。我相信我遵守了ARC的内存管理指南。 这个问题似乎与我为上传测试创建的随机数据一样。它的记忆似乎没有被释放。
这里是我创建上传数据和ASIHTTPRequest对象:使用ASIHTTPRequest的内存泄漏appendPostData与ARC
ASIHTTPRequest *request0 = [ASIHTTPRequest requestWithURL:uploadTestURL];
__weak ASIHTTPRequest *request = request0;
NSData *uploadData ;
if ([speedTier isEqualToString:@"Wifi"]) {
uploadData = [self createRandomNSDataOfSize:1000000];
}else
{
uploadData = [self createRandomNSDataOfSize:4000000];
}
[request appendPostData:uploadData];
实际创建数据的功能是:
NSMutableData* theData = [NSMutableData dataWithCapacity:size];
for(unsigned int i = 0 ; i < size/4 ; ++i)
{
u_int32_t randomBits = arc4random();
[theData appendBytes:(void*)&randomBits length:4];
}
return theData;
然后我继续设置了块setBytesSentBlock,我在那里管理上传图片和上传终止时刻。一些代码低于:
[request0 setBytesSentBlock:^(unsigned long long size, unsigned long long total) {
double timeDiffereceFromStart = [[NSDate date] timeIntervalSinceDate:start];
if (totalUploadSize == 0)
{
start=[NSDate date];
totalUploadSize = [request.postBody length];
return;
}
if(startPosition == 0 && timeDiffereceFromStart >= 1)//[request totalBytesSent] > 20000)
{
startPosition = [request totalBytesSent];
start=[NSDate date];
return;
}
我刚刚张贴一些代码,而是想表明,我使用的块中的变量“请求”。我很确定我在这里修复了通告保留问题,但我想确保没有其他问题。
其他的事情我应该注意 - 我已经在ASIHTTPRequest dealloc函数中设置了一个断点。我创建的这个类型的所有对象都会触发dealloc断点。所以他们都被正确地释放了。但是我不明白为什么内存使用会在它上传函数时继续上升。 谢谢!
查看接受的答案[这个问题](http://stackoverflow.com/questions/8375508/why-are-my-asihttprequest-files-showing-arc-errors) – Niraj
嗨Niraj,你的意思是我应该转而使用AFNetworking?这个问题是由我的ARC代码和不是ARC的ASIHTTPRequest之间的交互引起的吗? – user3121003
你在哪里看到内存增加?调试导航仪还是仪器? – Putz1103