我正在尝试运行以下功能
+(NSString *)responseFromQuery:(NSString *) queryString
{
__block NSString *response;
__block NSError *err = nil;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),^{
response = [NSString stringWithContentsOfURL:[NSURL URLWithString:queryString] encoding:NSUTF8StringEncoding error:&err];
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@",response);
if (err != nil)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Alert!"
message:@"An Error has occurred" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alertView show];
return response;// = @"Error";
}
});
});
// return response;
}
我想在执行块后传递响应的值,但是它首先运行最后一个返回,我怎样才能使块内的返回表达式运行。我在 NSObject 类中使用这个函数根据调试它从不运行dispatch_async queue.
现在,如果我返回它会给我错误"Control may reach at the end of non void block"