2

我正在使用 AFNetworking,但在使用 JSON 调用 POST 时遇到了问题。我在 base64 中上传了几张图像,我注意到即使我上传了所有内容,_convertJSONString 或相关内容仍在内存中。应该是我创建 NSURLRequest 时 AFNetworking 应用的 JSON 转换,实际上应该被释放。我不知道我是否遗漏了什么,但这是一种奇怪的行为。

这是我如何在客户端内实现请求的示例:

NSMutableURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:params];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
            completionBlock(JSON, response, nil);
        failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
            completionBlock(nil, response, error);
        }];

[self enqueueHTTPRequestOperation:operation];

这是 Instrument 说分配来自的行:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wassign-enum"
                    [request setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]];
#pragma clang diagnostic pop

这是一部分:

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
                                      path:(NSString *)path
                                parameters:(NSDictionary *)parameters

在 AFHTTPClient.m

提前感谢您的任何帮助或解决方案。

第一个解决方法

我发现AFURLConnectionOperation里面的NSURLRequest的内容在操作完成后并没有完全释放,这会导致泄漏。设置self.request = nilinside- (void)finish方法解决了这个问题。这只是一种解决方法,但我目前找不到另一种方法。

4

1 回答 1

0

这不是问题。对象在内存中的寿命可能相对较长,不会发生泄漏。

别担心。

于 2013-06-26T16:02:10.133 回答