3

iOS 6.1にアップデートした後、AFNetworkingフレームワークのAFImageRequestOperation.mとAFHTTPClient.mで次の警告が表示されます。

このブロックで「操作」を強くキャプチャすると、保持サイクルにつながる可能性があります

この回答に基づいて、__weak変数を使用してARCの保持サイクルを修正できます。それはまた言う

ブロックはキャプチャされたオブジェクトによって保持されます

誰かがこれを解決する方法を知っていますか?

ありがとう。

4

2 に答える 2

4

XCode 4.6がこの問題を回避するための警告を表示しているのは幸運です。これは、弱参照を提供することで解決できます。

AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest];

**__weak AFImageRequestOperation *tempRequestOperation = requestOperation;**

[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    if (success) {
        UIImage *image = responseObject;
        if (imageProcessingBlock) {
            dispatch_async(image_request_operation_processing_queue(), ^(void) {
                UIImage *processedImage = imageProcessingBlock(image);

                dispatch_async(**tempRequestOperation**.successCallbackQueue ?: dispatch_get_main_queue(), ^(void) {
                    success(operation.request, operation.response, processedImage);
                });
            });
        } else {
            success(operation.request, operation.response, image);
        }
    }
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    if (failure) {
        failure(operation.request, operation.response, error);
    }
}];
于 2013-02-02T18:04:55.197 に答える
0

OKここに問題がありました。GitHubからMasterブランチをダウンロードし続けていましたが、ここ(バージョン1.1.0)からAFNetworkingをダウンロードしようとしたので、警告が表示されなくなりました。

ダウンロードしたときに最新のコミットがマスターブランチに含まれていなかった理由はわかりませんが、前にブロック警告でこれらの強力な参照を解決したことは明らかです。

常にWebサイトをチェックして、最新のリリースバージョンを確認するか、GitHubからの最新のコミットを同期してください:)(iOS 6.0アプリには何も表示されませんでしたが、Xcode 4.6で起動されました)

于 2013-02-03T03:56:17.203 に答える