【发布时间】:2016-05-19 05:46:33
【问题描述】:
我想在队列中发送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"
我知道我需要定义块类型,但是我不知道如何在这个递归函数中使用它。
【问题讨论】:
-
好的,让我们从
manager开始。当方法结束时,它会被销毁,是吗?那么它究竟是如何做到的呢? -
@trojanfoe 销毁管理器没有问题,我只是想再次调用这个方法,这样我就可以在上一个请求完成后开始新的请求。是的,这不是最好的解决方案,但它可以解决问题。我也尝试了其他解决方案,但它们根本不起作用:stackoverflow.com/questions/37297033/…
标签: objective-c recursion afnetworking objective-c-blocks