0

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

- (UIImage *)imageFromURLString:(NSString *)urlString;

...它只是建立一个连接,从接收到的数据创建一个 UIImage 并返回它。

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

  • 我应该只创建一个原子类变量并从前一个函数中填充它吗?
  • 也许将指向 UIImage 对象的指针传递给方法并从内部填充它?

我知道使用类变量将是最简单的解决方案,但它似乎不是很“干净”,对我来说也不是最优的。提前致谢!

4

1 回答 1

3

答案是积木

- (void)imageFromURLString:(NSString *)urlString completionBlock:(void(^)(UIImage *image))

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

用法将是

[self imageFromURLString:@"url" completionBlock:^(UIImage *image){
    //do some stuff with the image
}
于 2013-02-27T09:04:48.530 回答