キューにメッセージを1つずつ送信したいとします。言い換えれば、私は以前の要求の応答を得た後、新しい要求を送る必要があります。私はdispatch_group_t
とAFNetworking
を使用します。しかし、期待通りに動作しません(私はoperationQueue
と他の方法があることを知っています)。ここに私のコントローラは次のとおりです。dispatch_group_tを使用したAFNetworking要求のキュー
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
dispatch_async(queue, ^{
[self sentTest];
});
}
- (void) sentTest{
dispatch_group_t group = dispatch_group_create();
NSLog(@"Start ...");
for(int i = 1; i <= 10; i++)
{
dispatch_group_enter(group);
NSLog(@"sending message %d ...", i);
NSMutableDictionary *params = [@{@"param1": @"value1",
@"param2": @"value2",
} mutableCopy];
NSString *webServiceUrl = @"MY_REST_SERVICE_URL";
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:webServiceUrl parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"message sent successful %d", i);
dispatch_group_leave(group);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"message sent failure %d", i);
dispatch_group_leave(group);
}];
}
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
NSLog(@"Finished!");
}
結果は以下の通りです:
2016-05-18 14:46:32.350 my_app[24514:29642637] Start ...
2016-05-18 14:46:32.350 my_app[24514:29642637] sending message 1 ...
2016-05-18 14:46:32.352 my_app[24514:29642637] sending message 2 ...
2016-05-18 14:46:32.353 my_app[24514:29642637] sending message 3 ...
2016-05-18 14:46:32.353 my_app[24514:29642637] sending message 4 ...
2016-05-18 14:46:32.354 my_app[24514:29642637] sending message 5 ...
2016-05-18 14:46:32.355 my_app[24514:29642637] sending message 6 ...
2016-05-18 14:46:32.356 my_app[24514:29642637] sending message 7 ...
2016-05-18 14:46:32.357 my_app[24514:29642637] sending message 8 ...
2016-05-18 14:46:32.358 my_app[24514:29642637] sending message 9 ...
2016-05-18 14:46:32.359 my_app[24514:29642637] sending message 10 ...
2016-05-18 14:46:33.738 my_app[24514:29642545] message sent successful 1
2016-05-18 14:46:34.818 my_app[24514:29642545] message sent successful 2
2016-05-18 14:46:35.833 my_app[24514:29642545] message sent successful 8
2016-05-18 14:46:36.955 my_app[24514:29642545] message sent successful 5
2016-05-18 14:46:37.957 my_app[24514:29642545] message sent successful 9
2016-05-18 14:46:39.017 my_app[24514:29642545] message sent successful 4
2016-05-18 14:46:40.034 my_app[24514:29642545] message sent successful 3
2016-05-18 14:46:41.115 my_app[24514:29642545] message sent successful 10
2016-05-18 14:46:42.233 my_app[24514:29642545] message sent successful 6
2016-05-18 14:46:43.253 my_app[24514:29642545] message sent successful 7
2016-05-18 14:46:43.253 my_app[24514:29642637] Finished!
この問題を解決するためにどのように?
ありがとうございます、あなたのコードに使用した 'AFNetworking'のバージョンは何ですか? –
あなたは大歓迎です。私は最新のリリース(3.1.0)を使用しました。 –