【发布时间】:2014-04-08 23:18:17
【问题描述】:
我对异步编程的概念非常陌生,但我了解它的一般要点(事情在后台运行)。
我遇到的问题是我有一种利用 AFNetworking 2.0 发出 HTTP 发布请求的方法,并且它在大多数情况下都有效。
但是,我无法弄清楚如何让该方法在方法返回时实际返回从响应中接收到的值,然后从响应中获取值。
-(int) registerUser
{
self.responseValue = 000; //Notice I set this to 000 at start of method
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSDictionary *parameters = @{ @"Username": @"SomeUsername" };
[manager POST:@"http://XXX/register"
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"JSON: %@", responseObject);
NSError *err = nil;
self.responseValue = [[responseObject objectForKey:@"res"] intValue];
//Note: This^ value returns 99 and NSLogs confirm this
}
failure:^(AFHTTPRequestOperation *operation, NSError *err)
{
NSLog(@"Error: %@", err);
}];
return self.responseValue; //This will return 000 and never 99!
}
处理这种情况的“正确”方法是什么?我听说过使用“回调”的耳语,但我真的不明白如何在这种情况下实现它。
任何指导或帮助都会很棒,干杯!
【问题讨论】:
标签: objective-c post asynchronous ios7 afnetworking-2