我对IOS编程比较陌生。
我有一个NSObject
“地点”,如下所示。
@interface Places : NSObject
@property(strong) NSString *placeName;
@property(strong) UIImage *placeImage;
@end
我在UITableView中列出了Places对象数组。在tableView:cellForRowAtIndexPath:
上,图像是从网络网址异步获取的。在tableView:didSelectRowAtIndexPath:
上,我将相应的“Places”对象传递给另一个ViewController(detailViewController)。在那个detailViewController中,我使用下面的代码在UIImageView
中显示图像。
self.imageView.Image = self.myPlaces.placeImage
我的问题是当我传递该对象时,无需将图像提取到placeImage。无论如何,在mainViewController中连续完成图像提取到self.imageView
时更新placeImage
。
我的代码如下。它在mainViewController的tableView:cellForRowAtIndexPath:
中调用。
NSURL *url = [NSURL URLWithString:@"http://imageurl_goes_here"];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSData *imageData = [NSData dataWithContentsOfURL:url];
dispatch_async(dispatch_get_main_queue(), ^{
if(imageData != nil)
{
place.placeImage = [UIImage imageWithData: imageData];
cell.cellImageView.image = place.placeImage;
}
});
});
答案 0 :(得分:1)
嗯,有一些技术可以存档:
dispatch_async
。但这需要主控制器了解第二个。This post可能对实例之间的其他类型的通信有所帮助。