我的方法类似于下面的方法:
- (UIImage*)getImage {
return image;
}
返回从另一个方法中的URL加载的图像。然而,我只希望上面的方法在图像不再是'nil'时(即一旦加载后)返回。什么是解决这个问题的最佳方法?
谢谢!
答案 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:
。然后你走开,什么都不做;你不要等你只是去做你的生意,如果有的话。下载完成后,您的块将被调用,图像将通过它传递给您。认识到这是什么形象并处理它取决于你。周围的项目显示了一个示例(下载图像并在它们到达时将它们弹出到表视图中)。