ここで私は一般的にそうしています。私も、ネットワーク要求を行うために使用されるシングルトンオブジェクトを持っています。頻繁に行う必要があるリクエストの場合、私は一般的にAFNetworkingをリクエストするためにAFHTTPRequestOperations(またはAFJSONRequestOperations)を受け入れるNSOperationQueueを持っています。これらのために、要求の成功または失敗時に実行されるcompletionBlockおよびfailureBlockプロパティがあります。私のシングルトンオブジェクトでは、特定のネットワーク要求を開始する方法があり、そのメソッドのパラメータとして、メソッドで定義されたブロックに渡すことができる成功と失敗のブロックが含まれます。この方法では、アプリケーション全体がネットワーク要求を行うことができ、その時点でのアプリケーションのスコープは、メソッドに渡されるブロック内のシングルトンで使用可能です。たとえば...(ARCを使用)
@implementation NetworkManager
-(void)makeRequestWithSuccess:(void(^)(void))successBlock failure:(void(^)(NSError *error))failureBlock
{
NSURL *url = [NSURL URLWithString:@"some URL"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
[responseObject doSomething];
if (successBlock)
dispatch_async(dispatch_get_main_queue(), successBlock);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failureBlock)
dispatch_async(dispatch_get_main_queue(), ^{
failureBlock(error);
});
}];
[self.operationQueue addOperation:op];
}
@end
また、成功ブロックには、何かパラメータを渡す必要があります。
良い質問:NSURLConnectionの接続マネージャーを作成して、ある接続ではうまく動作するが、いくつかの接続ではうまく動作しない人として、これについての回答を探しています。 –