gpt4 book ai didi

objective-c - 无法返回 NSMutableArray 值

转载 作者:行者123 更新时间:2023-11-28 18:25:29 25 4
gpt4 key购买 nike

谁能告诉我为什么我不能在那里返回 NSMutableArray:

-(NSMutableArray)makeServiceRequest:(UIViewController *)sender
{
NSMutableString *urlString= [NSString stringWithFormat:@"http://www.servicedata/%@", _searchValue];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData* data = [NSData dataWithContentsOfURL:
[NSURL URLWithString: urlString]];

NSError* error;

NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&error];

dispatch_async(dispatch_get_main_queue(), ^(){
NSLog(@"json arrived");
return json;
});
});
}

我已经在头文件中声明了它。有没有办法把它变成一个类方法?

最佳答案

你不能这样做,你分派(dispatch) block 相当于创建另一个线程并放手,当你的 block 执行方法 makeServiceRequest 已经执行并且不再在范围内时,你需要做什么通知调用者他们的请求是通过协议(protocol)或通知完成的……流程是这样的

  • 调用者调用方法
  • 方法执行,在不同的线程上启动 block 并返回
  • 来电者继续他的生意
  • 最终 block 被执行,为了回到调用者,我们需要使用协议(protocol)或通知(还有其他方法,但我认为这两种是最好的方法)

如果您想了解 NSNotifications,请查看 this questions

关于objective-c - 无法返回 NSMutableArray 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com