毎回、次のメソッドを呼び出して、約 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];
}