嗨,我是 iPhone 应用程序的新手。在我的应用程序中,我使用了 tableview。
当我单击表格单元格时,它会显示具有 UIScrollview 的详细视图。我在哪里加载
来自 NSMutableArray 的图像。在那个 NSMutableArray 中有一些 URL 图像。
当我单击表格单元格时,加载所有图像需要更多时间。
请我需要帮助来完成我的申请。很多人说要异步进行
但我不知道该怎么做。
提前致谢。等待解决方案。
嗨,我是 iPhone 应用程序的新手。在我的应用程序中,我使用了 tableview。
当我单击表格单元格时,它会显示具有 UIScrollview 的详细视图。我在哪里加载
来自 NSMutableArray 的图像。在那个 NSMutableArray 中有一些 URL 图像。
当我单击表格单元格时,加载所有图像需要更多时间。
请我需要帮助来完成我的申请。很多人说要异步进行
但我不知道该怎么做。
提前致谢。等待解决方案。
您可能应该使用AFNetworking 之类的库来加载图像,它会处理 tableView 上图像的下载和交换。
首先,我想向您推荐Paul Hegarty 教程(在第 9、10 讲和主要是第 11 讲(多线程)中),您可以学到很多东西。
这里一些示例代码可以快速但多余地帮助您:
dispatch_queue_t imageFetchQ = dispatch_queue_create("image fetcher", NULL);
dispatch_async(imageFetchQ, ^{
NSData *imageData = [[NSData alloc] initWithContentsOfURL:self.imageURL]; // could take a while
// UIImage is one of the few UIKit objects which is thread-safe, so we can do this here
UIImage *image = [[UIImage alloc] initWithData:imageData];
// check to make sure we are even still interested in this image (might have touched away)
if (self.imageURL == imageURL) {
// dispatch back to main queue to do UIKit work
dispatch_async(dispatch_get_main_queue(), ^{
if (image) {
self.scrollView.zoomScale = 1.0;
self.scrollView.contentSize = image.size;
self.imageView.image = image;
self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height);
}
});
}
});