0

誰かがスレッドをスパムして、ベストプラクティスではないことを伝える前に、この場合、非同期メソッドを使用しない正当な理由があります。

特定のメソッド呼び出しに対して、AFNetworking ライブラリを強制的に同期モードで実行しようとしています (ファクトリ化されています)。

これが私の(ハッキングされた)スニペットです:

    NSURL *url = [NSURL URLWithString:_apiBaseUrl];
    AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:url];
    NSMutableURLRequest *request = [client requestWithMethod:@"POST" path:path parameters:nil];

    NSDictionary *requestDict = [NSDictionary dictionaryWithObjects:@[@"2.0", path, params, [NSNumber numberWithInt:(int)[[NSDate date] timeIntervalSince1970]]] forKeys:@[@"jsonrpc", @"method", @"params", @"id"]];

    NSString *requestBody = [requestDict JSONString];

    NSLog(@"requestBody: %@", requestBody);

    // Set the request body
    [request setHTTPBody:[requestBody dataUsingEncoding:NSASCIIStringEncoding]];
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

        // Do something with the success (never reached)
        successBlock(request, response, JSON);

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
        failureBlock(request, response, error, JSON);
    }];

    if (queue == 1) {
        [self.operationArray addObject:operation];
    }
    else {
        [operation waitUntilFinished];
        successBlock(nil, nil, nil);            
        //[operation start];

    }

メソッドが実行され、キュー パラメータによってメソッドが強制的に waitUntilFinished になると、成功ブロックに到達することも、次の行に到達することもありません。start メソッドを使用すると、正常に動作します。

4

0 に答える 0