在返回对象之前等待块完成

时间:2015-01-08 03:49:07

标签: ios objective-c

-(NSNumber *)method:{

   NSString *url = urlToPost;
   NSNumber *success = [[NSNumber alloc]init];

   AFHTTPRequestOperationManagerObject POST:url parameters:@{} success:^(AFHTTPRequestOperation *operation, id responseObject) {

        success = [NSNumber numberWithBool:YES];

   } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        success = [NSNumber numberWithBool:NO];

   }]; 

   return success;

}

每次调用此方法时,成功都将返回null。我已尝试在主队列上调度块,因为其他类似的StackOverflow答案显示但同样的问题仍然存在。

1 个答案:

答案 0 :(得分:0)

成功为空,因为它在被分配到块内之前返回。
异步方法在后台线程中运行代码并在以后调用该块。 调用函数AFHTTPRequestOperationManagerObject POST:url parameters:@{} success:^后,函数的其余部分无需等待即可执行 因此,return success的执行可能发生在异步函数中调用完成块之前。