从文件异步加载图像

Pra*_*dda 3 iphone asynchronous objective-c ios4

我在本地存储中有一个相对的图像,我想在不打扰UI线程的情况下向用户显示它.我正在使用

[[UIImage alloc] initWithContentsOfFile:path];
Run Code Online (Sandbox Code Playgroud)

加载图像.

任何建议/帮助请....

Joh*_*lin 5

如果您要做的就是保持UI线程可用,请设置一个简短的方法在后台加载它并在完成后更新imageView:

-(void)backgroundLoadImageFromPath:(NSString*)path {
    UIImage *newImage = [UIImage imageWithContentsOfFile:path];
    [myImageView performSelectorOnMainThread:@selector(setImage:) withObject:newImage waitUntilDone:YES];
}
Run Code Online (Sandbox Code Playgroud)

这假设myImageView是该类的成员变量.现在,只需在任何线程的后台运行它:

[self performSelectorInBackground:@selector(backgroundLoadImageFromPath:) withObject:path];
Run Code Online (Sandbox Code Playgroud)

注意,backgroundLoadImageFromPath您需要等到setImage:选择器完成,否则后台线程的自动释放池可能会在setImage:方法保留之前释放映像.