首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Afnetworking如何释放下载的数据内存?

Afnetworking如何释放下载的数据内存?
EN

Stack Overflow用户
提问于 2015-03-23 19:27:46
回答 1查看 159关注 0票数 0

我正在用post请求下载40MB的文件。在下载请求期间,它也分配40MB。但在那之后,当下载完成时,内存不会自行释放。以下是我的示例代码,如何释放内存?

代码语言:javascript
运行
复制
+(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;
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-23 19:29:34

把你的代码放进去

代码语言:javascript
运行
复制
@autoreleasepool {
    ...do your work here...
  }

试试这个:

@autoreleasepool { if (product.productFormatType == 1) pr SavePdfToFile:产品数据:响应对象;else pr SaveEpubToFile:产品数据:响应对象;}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29209086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档