递归函数得到 "Variable is not assignable (missing __block type specifier) error"

recursive function get "Variable is not assignable (missing __block type specifier) error"

我想在队列中发送 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 在方法结束时被销毁,但它被块保留。

我不确定您的代码是否有效,但实际的错误消息与更新块中的 i 有关(并且需要应用 __block 属性),但是有根本没有理由增加 i,只需将 i + 1 传递给递归方法:

[self sentTest:i + 1];

(您的代码中缺少一个分号,所以我不确定那是不是真正的代码)。