gpt4 book ai didi

iphone - NSOperation 和 SetImage

转载 作者:行者123 更新时间:2023-12-03 21:08:32 25 4
gpt4 key购买 nike

我需要使用线程来从网络检索图像并将其分配到 ImageView 中。

我对 NSOperation 进行了子类化,并从我的 View Controller 中调用它,如下所示:

NSOperation *operation = [[[GetImage alloc] init] autorelease];

[queue addOperation:operation];

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

NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];

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

[imageData release];

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

谢谢

最佳答案

您使用委托(delegate)。

您的 NSOperation:

- (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];
}

您的代表:

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

重要的部分是检查是否在主线程上运行的部分。
您无法从另一个线程访问界面元素。因此,如果您不在主线程上,则在主线程上启动相同的方法

关于iphone - NSOperation 和 SetImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com