首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOperation和SetImage

NSOperation和SetImage
EN

Stack Overflow用户
提问于 2011-01-31 03:51:05
回答 4查看 626关注 0票数 2

我需要使用线程,以便从web检索图像,并将其分配到图像视图中。

我继承了NSOperation的子类,并在视图控制器中调用它,如下所示:

代码语言:javascript
复制
NSOperation *operation = [[[GetImage alloc] init] autorelease];

[queue addOperation:operation];

我得到的图像很好,但是如何分配NSOperation类中的图像呢?我将图像存储在一个名为RetrievedImage的UIImage中:

代码语言:javascript
复制
NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];

retrievedImage = [[UIImage alloc] initWithData:imageData];

[imageData release];

我现在如何将其放入我的ViewController的ImageView中?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-31 04:19:57

您可以使用委派。

您的NSOperation:

代码语言:javascript
复制
- (void)main {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://sstatic.net/stackoverflow/img/apple-touch-icon.png"]];
    UIImage *image = [UIImage imageWithData:data];
    [delegate fetchedImage:image];
    [pool drain];
}

您的代表:

代码语言:javascript
复制
- (void)fetchedImage:(UIImage *)image {
    if (![NSThread isMainThread]) {
        [self performSelectorOnMainThread:_cmd withObject:image waitUntilDone:NO];
        return;
    }
    self.imageView.image = image;
}

重要的部分是检查您是否在主线程上运行的部分。

您不能从另一个线程访问接口元素。因此,如果你不在主线程上,你可以在主线程上启动相同的方法

票数 4
EN

Stack Overflow用户

发布于 2011-01-31 04:11:52

这里有几个选项:

  1. 您可以将对您的imageview的引用传递给GetImage操作,并在该操作获取图像时分配给imageview.image。
  2. 您可以子类UIImageView并让它侦听通知,例如GetImageFinishedNotification-该操作发布此通知,并在完成时附加图像,imageview接收并显示图像。
  3. 您可以设置一个具有UIImage属性的模型对象。您的视图控制器保留在此对象上,并在其image属性上设置键值观察。该操作也保留在它上面,并在获取图像时设置image属性。视图控制器将收到更改警报,并设置正确的图像视图。

我个人更喜欢在这类事情上使用NSNotification --它实际上非常类似于foursquare的fully-loaded项目。

票数 0
EN

Stack Overflow用户

发布于 2011-01-31 10:23:58

尝试使用HJCache,它是为这种事情而生的:http://www.markj.net/hjcache-iphone-image-cache/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4845088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档