我一直在上傳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