gpt4 book ai didi

iphone - 我的应用程序在上传数据时收到内存警告后崩溃了

转载 作者:行者123 更新时间:2023-12-03 17:41:51 25 4
gpt4 key购买 nike

每次我都会通过调用以下方法上传一段约2Mb的数据。

调用大约 30 次后,应用程序将收到内存警告,然后大约调用 20 次后,应用程序将崩溃,没有任何信息。我​​的代码有什么问题吗?我在代码中没有发现任何内存泄漏。

//connect to uploading server, upload one slice of data, and get the next slice uploading point.
-(void)uploadSlice
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSURL *baseUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/gupload/upload_slice",_uploadServerIP]];
NSData *sliceData = nil;
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:item.filePath];
if (file == nil)
NSLog(@"Failed to open file");

[file seekToFileOffset:_offset];
sliceData = [file readDataOfLength:_length];
[file closeFile];
NSMutableData *data = [NSMutableData dataWithData:sliceData];
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:
_uploadToken, @"upload_token",
[NSString stringWithFormat:@"%d",_sliceTaskId],@"slice_task_id",
[NSString stringWithFormat:@"%lld",_offset], @"offset",
[NSString stringWithFormat:@"%d",_length], @"length",
nil];

NSURL *finalUrl = [self generateURL:[baseUrl absoluteString] params:dic];
NSLog(@"upload slice url = %@",finalUrl);
ASIFormDataRequest *aRequest = [ASIFormDataRequest requestWithURL:finalUrl];
[aRequest setPostBody:data];

aRequest.requestMethod = @"POST";
[self setPostUserInfo:aRequest withRequestType:kYoukuUploadSlice];
[_networkQueue addOperation:aRequest];

[dic release];
[pool drain];
}

最佳答案

您一次排队的请求过多 - ASIHTTPRequest 会将您的数据保留在内存中,直到将其发送到服务器,因此内存不足也就不足为奇了。

尝试确保队列中未处理的请求不超过 3 或 4 个 - 即。从第 4 个队列开始,然后在一个队列完成后将另一个队列放入队列,依此类推。

关于iphone - 我的应用程序在上传数据时收到内存警告后崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11047302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com