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];

そして、これはインストゥルメントが割り当てが由来することを示している行です:

#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 = nil内部メソッドを設定- (void)finishすると、問題が解決します。これは単なる回避策ですが、現在、別の方法を見つけることができません。

4

1 に答える 1

0

これは問題ではありません。オブジェクトは、リークすることなく、メモリ内で比較的長く存続する場合があります。

ご心配なく。

于 2013-06-26T16:02:10.133 に答える