菜鸟教程小白 发表于 2022-12-12 13:25:19

ios - AFNetworking 内存不足问题


                                            <p><p>我使用此代码下载图像:</p>

<pre><code>- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    SECustomCollectionViewCell *collectionViewCell = (SECustomCollectionViewCell *);

    NSDictionary *artwork = ;

    collectionViewCell.theImageView.image = nil;

    if (artwork[@&#34;video_url&#34;])
    {
      UIWebView *webView = (UIWebView *);
      NSString * html = frame:collectionViewCell.frame];

      ;

      ;

      ;
    }
    else
    {
      NSMutableURLRequest *request = ]];

      UIImage *cachedImage = [[ sharedImageCache] cachedImageForRequest:request];

      if (cachedImage)
      {
            collectionViewCell.theImageView.image = ;
            ;
      }
      else
      {
            [collectionViewCell.theImageView setImageWithURLRequest:request placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {

                // Only update visible cell, to avoid inserting image to another cell.
                SECustomCollectionViewCell *visibleCollectionViewCell = (id);

                if (visibleCollectionViewCell)
                {
                  ];

                  ;

                  ;
                }

            } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {

            }];
      }
    }

    return collectionViewCell;
}
</code></pre>

<p>但它会导致内存不足的问题。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>导致内存使用的不是 AFNetworking,而是图像代码。 JPEG 压缩图像,但创建图像时,每个像素将有 4 个字节。由于服务器上 1.4MB 的 jpeg 文件将加载所有 AFNetworking。</p>

<p>您似乎正在使用一些帮助程序类查看该代码并 NSLog AFNetworking 下载的实际数据的大小。</p>

<p>一张 5407 × 3605、每像素 4 字节的图像将创建超过 77MB 的图像。您可以对其进行缩放,但首先会渲染原始图像,并且缩放将使用更多内存,因为最后您将拥有两个图像。</p>

<p>您需要将原始图像的创建和缩放包装在自动释放池中,以便尽快释放原始图像。</p>

<p>最好一开始就不要加载这么大的图片。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - AFNetworking 内存不足问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27637203/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27637203/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - AFNetworking 内存不足问题