2015-10-27 23 views
1

我使用AFNetworking框架來調用Web服務,我已經使用 POST方法從這樣的Web服務響應:如何在iOS中執行block後得到響應?

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
       manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
       [manager.requestSerializer setTimeoutInterval:25]; 
       [manager POST:stringURL parameters:param 
       success:^(AFHTTPRequestOperation *operation, id responseObject) { 
            NSLog(@"RESPONCE : %@", responseObject); 
       } 
       failure:^(AFHTTPRequestOperation *operation, NSError *error) 
       { 
       NSLog(@"Error: %@", error); 
       NSString *msg = error.localizedDescription; 
       UIAlertView *alertview = [[UIAlertView alloc]initWithTitle:@"That Shift" message:msg delegate:nil cancelButtonTitle:@"Dissmiss" otherButtonTitles:nil, nil]; 
       [alertview show]; 
            }]; 
     NSLog(@"Right AFter Block Execution RESPONCE : %@", responseObject); 

我希望我的回答之後其NSLog(@"Right AFter Block Execution RESPONCE : %@", responseObject);執行任何一個可以建議我該怎麼做?

原因BEHINDE這樣做:

背後這樣做的原因是,我想我已經知道該代碼後立即使用另一塊,我想使用第二塊性反應,這將是右後那在NSLog(@"Right AFter Block Execution RESPONCE : %@", responseObject);的plce。

+1

你不能因爲操作是異步的。 – trojanfoe

+0

將此放入成功塊內有什麼問題? – YvesLeBorg

回答

0

您可以使用信號燈來同步您的線程,因此第一個線程會阻塞並等待第二個線程。但不要在主線程上執行它,因爲你的GUI會凍結。

dispatch_semaphore_t sema = dispatch_semaphore_create(0); 
// Inside callback: 
dispatch_semaphore_signal(sema); 
// Before NSLOG 
dispatch_semaphore_wait(sema, <timeout_may_be_forever>); 
+1

爲什麼不簡單地在「成功塊」中做? – trojanfoe

+0

@trojanfoe我不是主題發起人,我不知道;) – user996142

相關問題