0

悲しいことに廃止された ASIHTTPRequest を置き換えるために、AFNetworking を開始しています。人々はこの新しい「AFNetworking」を気に入っているようですが、私のプロジェクトには組み込まれておらず、その理由がわかりません。Class class = NSClassFromString(className);ファイルでから始まるビルド エラーが発生HTTPRequestOperationWithRequest:success:failureしますAFHTTPClient.m

エラーは「匿名クラスの宣言は定義でなければなりません」であり、Googleに問い合わせましたが、何も得られませんでした。ヘルプ?

環境:

- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest 
                                                    success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                                                    failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
    AFHTTPRequestOperation *operation = nil;
    NSString *className = nil;
    NSEnumerator *enumerator = [self.registeredHTTPOperationClassNames reverseObjectEnumerator];
    while (!operation && (className = [enumerator nextObject])) {
        Class class = NSClassFromString(className);
        if (class && [class canProcessRequest:urlRequest]) {
            operation = [[(AFHTTPRequestOperation *)[class alloc] initWithRequest:urlRequest] autorelease];
        }
    }

編集:以下の回答ごとに解決されました。パッチファイルはこちら.

編集 2:これらの変更は最新の AFNetworking に取り込まれているため、将来これを見つけた人は誰でも:新しいバージョンをダウンロードするだけで準備完了です。また、将来はどうですか?こんにちは未来。

4

1 に答える 1

5

変数「クラス」の名前を別の名前に変更することで、コンパイラエラーを回避できました。残念ながら、なぜ問題が発生したのかを理解できませんでした。ここに手がかりがあります: AFNetworking を未知のコンパイラ フラグを持つ大きな既存のプロジェクトに追加したとき、それは私に起こりました。新しいプロジェクトに AFNetworking を追加したところ、まったく問題は発生しませんでした。

于 2012-01-18T18:26:52.167 に答える