菜鸟教程小白 发表于 2022-12-12 10:04:46

ios - 为什么 UILabel 会增加内存使用量?


                                            <p><p>所以,我有一些边界(<em><code>addBoundaryWithIdentifier:</code></em>),一个生成 block 的代码(<em><code>UIView</code></em>方 block )每秒使用 <em><code>performSelector:</code></em>,方 block 会掉落,如果与边界发生碰撞,我会移除项目。</p>

<p>现在,如果我将 UILabel 添加到 View 中,内存使用量会慢慢增加到 15Mb,然后停止攀升。</p>

<p><strong>不使用 UILabel 的内存:</strong>
<img src="https://cs540103.vk.me/c616825/v616825982/e87e/FUt6u4jPUyI.jpg" alt="image"/>
<strong>与 UILabel 一起使用的内存:</strong>
<img src="https://cs540103.vk.me/c616825/v616825982/e886/Efvf_p-bk5M.jpg" alt="image"/>
<strong>几分钟后使用 UILabel 的内存:</strong>
<img src="https://cs540103.vk.me/c616825/v616825982/e88e/p3W3GWw4oaw.jpg" alt="image"/> </p>

<p>这里发生了什么?如何解决?我应该解决这个问题吗?</p>

<p>这是我正在使用的代码。 </p>

<pre><code>@implementation ESViewController {
    UIPushBehavior *pushBlock;
    UIDynamicAnimator *mainAnimator;
    UICollisionBehavior *blockCollision;
}

- (void)viewDidLoad {
    ;

//    UILabel *label = [ initWithFrame: CGRectMake(110, 400, 100, 50)];
//    ;
//    ;
//    ;

    mainAnimator = [ initWithReferenceView: self.view];

    blockCollision = [ initWithItems: @[]];
    [blockCollision addBoundaryWithIdentifier:@&#34;bottom&#34;
                                    fromPoint:CGPointMake(0, 480)
                                    toPoint:CGPointMake(320, 480)];
    [blockCollision addBoundaryWithIdentifier:@&#34;left&#34;
                                    fromPoint:CGPointMake(0, 480)
                                    toPoint:CGPointMake(0, 0)];
    [blockCollision addBoundaryWithIdentifier:@&#34;right&#34;
                                    fromPoint:CGPointMake(320, 480)
                                    toPoint:CGPointMake(320, 0)];
    [blockCollision addBoundaryWithIdentifier:@&#34;top&#34;
                                    fromPoint:CGPointMake(0, -40)
                                    toPoint:CGPointMake(320, -40)];
    ;
    ;

    pushBlock = [ initWithItems: @[] mode: UIPushBehaviorModeContinuous];
    ;
    ;

    ;
}

- (void) movingBlocks {
    UIView *block = [ initWithFrame:CGRectMake(arc4random() % 320, -20, 20, 20)];
    ];
    ;
    ;
    ;
    ;
}

- (void)collisionBehavior:(UICollisionBehavior *)behavior
      beganContactForItem:(id&lt;UIDynamicItem&gt;)item
   withBoundaryIdentifier:(id&lt;NSCopying&gt;)identifier
                  atPoint:(CGPoint)p {
    ;
    ;
    [(UIView*)item removeFromSuperview];
}

@end
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我已经重现了您所描述的症状,但我认为 Xcode 在对您撒谎,您应该打开雷达 (bugreport.apple.com)。</p>

<p>如果您在 Instruments 中运行它,内存使用情况将完全符合您的预期。我已经尝试在 Release模式下使用 Xcode 配置文件(就像 Instruments 一样),并且我已经在所有 iPad 模拟器上运行。该症状在 Xcode 中非常可重现,而 Instruments 显示了预期的结果并且非常稳定。我什至将一个在 Xcode 中显示增长的正在运行的进程转移到 Instruments 中,但 Instruments 仍然没有增长。我会说 Xcode 在这里被破坏了。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为什么 UILabel 会增加内存使用量?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23809048/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23809048/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为什么 UILabel 会增加内存使用量?