Afnetworking如何解除锁定下载的数据内存



我正在下载40 mb的文件和post请求。在下载请求期间,它也分配了40 mb。但在那之后,当下载完成时,内存并没有自行释放。这是我的示例代码,如何释放内存?

+(AFHTTPRequestOperation*)PostDownloadRequest:(NSDictionary*)postDic saveName:(Product*)product Url:(NSString*)Url success:(void (^)(id responseObject)) success failure:(void (^)(AFHTTPRequestOperation *operation)) failure
{
    if(Downloadings==nil)
    {
        Downloadings=[[NSMutableArray alloc]init];
    }
    __block AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager.requestSerializer setValue:@"Application/Json" forHTTPHeaderField:@"Content-Type"];
    [manager.requestSerializer setCachePolicy: NSURLRequestReloadIgnoringLocalCacheData];
    if([IdentityUser UserId]!=nil)
        [manager.requestSerializer setValue:[IdentityUser Token] forHTTPHeaderField:@"Authorization"];
    if (product.productFormatType == 1) {
        [manager.requestSerializer setValue:@"Application/pdf" forHTTPHeaderField:@"Accept"];
    }
    else{
        [manager.requestSerializer setValue:@"Application/zip" forHTTPHeaderField:@"Accept"];
    }
    [Downloadings addObject:product.iosInAppId];
    __block AFHTTPRequestOperation *requestOperation =[manager POST:Url
                                                         parameters:postDic
                                                            success:^(AFHTTPRequestOperation *operation, id responseObject) {
                                                                dispatch_queue_t taskQ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
                                                                 dispatch_async(taskQ, ^{
                                                                    FileProcess *pr=[[FileProcess alloc]init];
                                                                    NSLog(@"%d", (int)product.productFormatType);
                                                                    if (product.productFormatType == 1) {
                                                                        [pr SavePdfToFile:product data:responseObject];
                                                                    }
                                                                    else{
                                                                        [pr SaveEpubToFile:product data:responseObject];
                                                                    }
                                                                });
                                                                  success(nil);
                                                                responseObject=nil;
                                                                requestOperation=nil;
                                                            } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                                                failure(operation);
                                                            }];
    return requestOperation;
}

将代码放入

@autoreleasepool {
    ...do your work here...
  }

试试这个:

@autoreleasepool 
{
    if (product.productFormatType == 1) 
         [pr SavePdfToFile:product data:responseObject];
    else
         [pr SaveEpubToFile:product data:responseObject];
}

最新更新