菜鸟教程小白 发表于 2022-12-13 06:01:35

ios - 在弧中调整 UIImage 大小时内存泄漏


                                            <p><p>我正在使用以下方法调整 <strong>UIImages</strong> 的大小</p>

<pre><code>- (UIImage *)resizeImage:(UIImage *)image toSize:(CGSize)newSize forName:(NSString *)name {
    UIGraphicsBeginImageContext(newSize);
    ;
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    ;
    return newImage;
}
</code></pre>

<p>在 <strong>UITableView</strong> 的 <strong>cellForRowAtIndexPath</strong> 方法中,我是这样使用它的</p>

<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @&#34;Cell&#34;;
    UITableViewCell *cell = ;

    [ removeFromSuperview];

    // Configure the cell...
    NSString *imageName = ;
    CGRect imageRect = CGRectMake(8, 5, 304, 190);

    UIImage *scaledImage = ;
    if (!) {
      scaledImage = toSize:CGSizeMake(304, 190) forName:imageName];
    }

    UIImageView *imgView = [ initWithFrame:imageRect];
    ;
    ;
    ;
    ;

    if ((lastIndexPath.row == 10 &amp;&amp; indexPath.row == 0) || indexPath.row == lastIndexPath.row) {

      if (_delegate) {
            NSString *imgName = ;
            ;
      }

      .CGColor];
      ;
      ;
      lastIndexPath = indexPath;
    }
    return cell;
}
</code></pre>

<p>但是当我通过 Profile 检查泄漏时,仪器会向我显示泄漏,例如
<img src="/image/twxue.jpg" alt="Leak shown in Instruments"/> </p>

<p>谁能告诉我为什么会出现这种泄漏??</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您应该了解关于 <code>-imageNamed:</code> 的两个主要事实,尤其是当您决定使用它时:</p>

<ol>
<li><code>-imageNamed:</code> 返回一个自动发布的图像,该图像将在未来的某个时间自动发布。</li>
<li><code>-imageNamed</code> 还会缓存它返回的图像。缓存正在保留图像。</li>
</ol>

<p>如果您不释放它,缓存将继续保留图像,直到它释放它,例如发生内存警告时。因此,当您使用 imageNamed 获取图像时,它不会被释放,直到缓存被清除。</p>

<p>如果您不希望出于任何原因缓存图像,则应使用另一种创建方法,例如 <code>-imageWithContentsOfFile:</code> 不会缓存图像。</code> p>

<p>您可以期望从 <code>-imageWithContentsOfFile:</code> 返回的图像对象会自动释放而不是缓存,并且会在运行循环结束时被释放。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在弧中调整 UIImage 大小时内存泄漏,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/21326844/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/21326844/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在弧中调整 UIImage 大小时内存泄漏