【问题标题】:How to return UIImage after it's loaded加载后如何返回 UIImage
【发布时间】:2014-01-16 03:56:23
【问题描述】:

我有一个类似下面的方法:

- (UIImage*)getImage {
    return image;
}

它返回以另一种方法从 URL 加载的图像。但是,我只希望上面的方法返回一次图像不再是“nil”(即一旦加载)。解决这个问题的最佳方法是什么?

谢谢!

【问题讨论】:

  • 在异步方法中调用 (UIImage*)getImage。发布您的代码以获取更多详细信息。

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


【解决方案1】:
- (void)getImage:(void(^)(UIImage *image))callback{
    //Load image asynchronously
    if(callback){
       callback(image);
    }
}

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

【讨论】:

    【解决方案2】:
    -(UIImage *)getImage {
        //isLoaded is your own function
        if ([self isImageLoaded:image) {
              return image;
        }
        return nil;
    }
    

    【讨论】:

      【解决方案3】:

      你不能这样做(或者至少你不应该这样做);这不是异步的工作方式。您要求开始下载,仅此而已;方法结束了。稍后,当下载完成后,下载代码会在主线程中回调你的代码并说“我有一张图片给你,拿去吧。”

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        相关资源
        最近更新 更多