Ios 在UITableView中从web加载图像的更有效方法是什么?

Ios 在UITableView中从web加载图像的更有效方法是什么?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,对于我的UITableView中的每个UITableViewCell,我会在后台线程中从web下载一个图像。然后我使用主线程从单元格更新imageView dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ //Background Thread // download the image in separat

对于我的
UITableView
中的每个
UITableViewCell
,我会在后台线程中从web下载一个图像。然后我使用主线程从单元格更新imageView

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
                //Background Thread
                // download the image in separate thread
                UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString: @"someurl.com" ] ] ];
                dispatch_async(dispatch_get_main_queue(), ^(void){
                    // this is called in the main thread after the download has finished, here u update the cell's imageView with the new image
                    cell.eventImageView.image = image;
                });
            });
滚动时我没有注意到任何延迟

但是,我想知道是否有更好的方法,如果有,我该怎么做

谢谢

我更喜欢使用SDWebImage()

我写的页面听起来与您的类似,其中包含非常简单的代码:

    // Set and load the images
    [cell.menuImageView sd_setImageWithURL:url placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

        // Get rid of the activity indicator when the image has been loaded
        [activity stopAnimating];
    }];
在我看来,这有很多好处:

1) 该库非常灵活,为您提供了许多有关如何下载图像的选项(这些选项仅为少数)

例如:

2) 该库缓存图像,这意味着下次您无需再次下载它们

3) 该库得到了很好的支持,有助于解决问题

我个人开始使用您使用的技术,发现有局限性和困难(如果图像下载速度慢,则添加活动指示器等),然后试用了许多不同的异步图像下载程序,这一个是最好的

希望能有所帮助

我更喜欢使用SDWebImage()

我写的页面听起来与您的类似,其中包含非常简单的代码:

    // Set and load the images
    [cell.menuImageView sd_setImageWithURL:url placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

        // Get rid of the activity indicator when the image has been loaded
        [activity stopAnimating];
    }];
在我看来,这有很多好处:

1) 该库非常灵活,为您提供了许多有关如何下载图像的选项(这些选项仅为少数)

例如:

2) 该库缓存图像,这意味着下次您无需再次下载它们

3) 该库得到了很好的支持,有助于解决问题

我个人开始使用您使用的技术,发现有局限性和困难(如果图像下载速度慢,则添加活动指示器等),然后试用了许多不同的异步图像下载程序,这一个是最好的

希望能有所帮助

我更喜欢使用SDWebImage()

我写的页面听起来与您的类似,其中包含非常简单的代码:

    // Set and load the images
    [cell.menuImageView sd_setImageWithURL:url placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

        // Get rid of the activity indicator when the image has been loaded
        [activity stopAnimating];
    }];
在我看来,这有很多好处:

1) 该库非常灵活,为您提供了许多有关如何下载图像的选项(这些选项仅为少数)

例如:

2) 该库缓存图像,这意味着下次您无需再次下载它们

3) 该库得到了很好的支持,有助于解决问题

我个人开始使用您使用的技术,发现有局限性和困难(如果图像下载速度慢,则添加活动指示器等),然后试用了许多不同的异步图像下载程序,这一个是最好的

希望能有所帮助

我更喜欢使用SDWebImage()

我写的页面听起来与您的类似,其中包含非常简单的代码:

    // Set and load the images
    [cell.menuImageView sd_setImageWithURL:url placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

        // Get rid of the activity indicator when the image has been loaded
        [activity stopAnimating];
    }];
在我看来,这有很多好处:

1) 该库非常灵活,为您提供了许多有关如何下载图像的选项(这些选项仅为少数)

例如:

2) 该库缓存图像,这意味着下次您无需再次下载它们

3) 该库得到了很好的支持,有助于解决问题

我个人开始使用您使用的技术,发现有局限性和困难(如果图像下载速度慢,则添加活动指示器等),然后试用了许多不同的异步图像下载程序,这一个是最好的


希望它有帮助

有更安全的方法(防止单元重用问题)和更标准的方法(使用通用框架),因此更好,而不一定更有效。您是否搜索过现有的解决方案?您可以使用nsurlSession,这是最好的…有更安全的方法(防止单元重用问题)和更标准的方法(使用通用框架),因此更好,但不一定更高效。您是否搜索过现有的解决方案?您可以使用nsurlSession,这是最好的…有更安全的方法(防止单元重用问题)和更标准的方法(使用通用框架),因此更好,但不一定更高效。您是否搜索过现有的解决方案?您可以使用nsurlSession,这是最好的…有更安全的方法(防止单元重用问题)和更标准的方法(使用通用框架),因此更好,但不一定更高效。您是否搜索了现有的解决方案?您可以使用nsurlSession做的是最好的…SDWebImage是一个不错的选择。您能否解释一下SDWebImage的选项,以及您提到的不同方法。我不明白。SDWebImage是一个从URL下载和缓存图像的库。您需要下载该库并将其添加到您的项目中——我在回答中链接了git存储库。然后,您可以选择要向其中添加图像的imageView。您可以在我的示例中看到,我正在下载一个图像并将其添加到cell.menuImageView。这是一个自定义imageView,但也可以使用cell.imageView将其添加到tableViewCell。您可以看到,如果要在返回图像后使用该图像,则完成块也会返回该图像。希望这有助于SDWebImage的发展。你能解释一下SDWebImage的选项,以及你提到的不同方法吗。我不明白。SDWebImage是一个从URL下载和缓存图像的库。您需要下载该库并将其添加到您的项目中——我在回答中链接了git存储库。然后,您可以选择要向其中添加图像的imageView。您可以在我的示例中看到,我正在下载一个图像并将其添加到cell.menuImageView。这是一个自定义imageView,但也可以使用cell.imageView将其添加到tableViewCell。您可以看到,如果要使用一次,完成块也会返回图像