Objective c 从单独的NSThread中运行的(以前的)函数接收返回值的替代方法?

Objective c 从单独的NSThread中运行的(以前的)函数接收返回值的替代方法?,objective-c,function,return-value,nsthread,Objective C,Function,Return Value,Nsthread,我最近开始重构代码,并试图通过使用更多线程来提高性能。特别是下载和连接。我有一个函数叫做 - (UIImage *)imageFromURLString:(NSString *)urlString; …它只是建立连接,从接收到的数据创建UIImage并返回它 现在我已经开始使用线程,我意识到我无法获得返回值(这是有意义的,因为线程与调用它的方法是分开运行的)解决这类问题的“最佳/最优雅的方法”是什么? 我应该创建一个原子类变量并从内部填充它吗 前一个功能 可能会将指向UIImage对象的指针

我最近开始重构代码,并试图通过使用更多线程来提高性能。特别是下载和连接。我有一个函数叫做

- (UIImage *)imageFromURLString:(NSString *)urlString;
…它只是建立连接,从接收到的数据创建UIImage并返回它

现在我已经开始使用线程,我意识到我无法获得返回值(这是有意义的,因为线程与调用它的方法是分开运行的)解决这类问题的“最佳/最优雅的方法”是什么?

  • 我应该创建一个原子类变量并从内部填充它吗 前一个功能
  • 可能会将指向UIImage对象的指针传递给该方法,然后 从内部填充
我知道使用类变量将是最简单的解决方案,但对我来说,它似乎不是非常“干净”或最优。提前谢谢

答案是积木

-(void)imageFromURLString:(NSString*)urlString完成块:(void(^)(UIImage*image))

基本上,在获取图像时,您将执行被调用方传递的块,并且图像将作为参数传递

用法将是

[self imageFromURLString:@"url" completionBlock:^(UIImage *image){
    //do some stuff with the image
}
答案是积木

-(void)imageFromURLString:(NSString*)urlString完成块:(void(^)(UIImage*image))

基本上,在获取图像时,您将执行被调用方传递的块,并且图像将作为参数传递

用法将是

[self imageFromURLString:@"url" completionBlock:^(UIImage *image){
    //do some stuff with the image
}

我没有想到他们。谢谢你的提示。因此,我应该基本上保存块内的图像?取决于您需要做什么。您可以将arg传递给另一个处理图像的方法。但是如果你需要保留这张图片,你可以保留一个itI的参考,我没有想到它们。谢谢你的提示。因此,我应该基本上保存块内的图像?取决于您需要做什么。您可以将arg传递给另一个处理图像的方法。但是,如果你需要保留该图像,你可以保留对它的引用