0

AFNetworking の予備知識は必要ありませんが、役立つ場合があります。

私は AFNetworking を使用しており、いくつかの追加のプロパティとメソッドを持つ AFHTTPRequestOperation のサブクラスを作成したいと考えています。

私が直面している問題は、AFHTTPRequestOperationManager のファクトリ メソッドを使用して AFHTTPRequestOperations を生成していて、明らかに AFNetworking ライブラリのコア コードを変更したくないことです。

だから私がやりたいことは、次のようなものです:

@implementation VP_AFHTTPRequestOperation : AFHTTPRequestOperation

+ (id)instantiateUsingAFHTTPRequestOperation:(AFHTTPRequestOperation*)reqOp {
    //I want to create an instance of VP_AFHTTPRequestOperation using the reqOp
    self = reqOp; //I can't just do this, but I don't know what to do
    return self;
}

- (void)mySubclassMethod { /* ... */ }
@end

アドバイスをいただければ幸いです

4

2 に答える 2

0

のオーバーライドで のサブクラスをサブクラスAFHTTPRequestOperationManager化して使用することで、必要なことを実行できると思います。ドキュメントで簡潔に説明されています:AFHTTPRequestOperationHTTPRequestOperationWithRequest:success:failure

AFHTTPRequestOperationManager サブクラスのすべての要求操作構築の動作を変更するには、HTTPRequestOperationWithRequest:success:failure をオーバーライドします。

于 2013-10-11T18:48:11.967 に答える
0

AFHTTPRequestOperationManager をサブクラス化し、何か良いものを返すようにしますHTTPRequestOperationWithRequest

フレームワークコードの変更は不要 AFAICS

@interface VP_AFHTTPRequestOperationManager : AFHTTPRequestOperationManager 
@end     

@implementation VP_AFHTTPRequestOperationManager

+ (instancetype)manager { 
    return [[[self class] alloc] init]; 
}

- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request
                                                success:(void (^) (AFHTTPRequestOperation *operation, id responseObject))success
                                                failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
    VP_AFHTTPRequestOperation *operation = [[VP_AFHTTPRequestOperation alloc] initWithRequest:request];
    operation.responseSerializer = self.responseSerializer;
    operation.shouldUseCredentialStorage = self.shouldUseCredentialStorage;
    operation.credential = self.credential;
    operation.securityPolicy = self.securityPolicy;

    [operation setCompletionBlockWithSuccess:success failure:failure];

    return operation;
}

@end
于 2013-10-11T18:30:30.527 に答える