我想在队列中发送AFNetworking
个请求。我为此目的创建了一个递归函数:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"Start ...");
[self sentTest:0];
}
- (void) sentTest:(int)i{
if(i >= 10)
{
NSLog(@"Finished");
return;
}
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);
// Now call the method again
[self sentTest:i++];
return;
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"message sent failure %d", i);
return;
}];
}
我收到此错误:
Variable is not assignable (missing __block type specifier) error"
我知道我需要定义块类型,但我不知道如何在这个递归函数中使用它。
答案 0 :(得分:1)
我有一些担心,manager
在方法结束时被销毁,但是它被块保留。
我不确定您的代码是否有效,但实际的错误消息与更新块中的i
有关(并且需要应用__block
属性),但是没有理由要完全增加i
,只需将i + 1
传递给递归方法:
[self sentTest:i + 1];
(你的代码中缺少分号,所以我不相信这是真正的代码)。