如何在加载后返回UIImage

时间:2014-01-16 03:56:24

标签: ios objective-c asynchronous uiimage objective-c-blocks

我的方法类似于下面的方法:

- (UIImage*)getImage {
    return image;
}

返回从另一个方法中的URL加载的图像。然而,我只希望上面的方法在图像不再是'nil'时(即一旦加载后)返回。什么是解决这个问题的最佳方法?

谢谢!

3 个答案:

答案 0 :(得分:2)

- (void)getImage:(void(^)(UIImage *image))callback{
    //Load image asynchronously
    if(callback){
       callback(image);
    }
}

我想使用block来加载异步图像。

答案 1 :(得分:0)

-(UIImage *)getImage {
    //isLoaded is your own function
    if ([self isImageLoaded:image) {
          return image;
    }
    return nil;
}

答案 2 :(得分:0)

你不能这样做(或者至少你不应该这样做);这不是异步的工作方式。你要求下载开始,这就是全部;方法结束了。稍后,当下载完成后,下载代码将回调到主线程上的代码并说“我有一个图像给你,接受它。”

这里的the example code from my book显示了一个专为此目的而设计的类(仅适用于iOS 7)。您可以使用URL和块的路径调用方法download:completionHandler:。然后你走开,什么都不做;你不要等你只是去做你的生意,如果有的话。下载完成后,您的块将被调用,图像将通过它传递给您。认识到这是什么形象并处理它取决于你。周围的项目显示了一个示例(下载图像并在它们到达时将它们弹出到表视图中)。