菜鸟教程小白 发表于 2022-12-12 16:18:28

objective-c - 我应该什么时候释放内存,如果有的话?


                                            <p><p>我已阅读所有 iOS 内存分配/释放基础知识,但在以下内容中找不到任何内容:</p>

<p>我创建了一个小应用程序,它几乎列出了 UIButtons 网格并单击其中任何一个,它会向当前 ControllerView 添加 UIScrollView(并在内部添加一堆 UIView 和 UIWebView 等)。</p>

<p>在添加 UIScrollVIew 时,我还添加了一个 UIButton,它将我带回“主网格”,然后从 superView 中删除 UIScrollView。
我释放了我保留/分配的所有东西等,当我使用 Instruments 检查应用程序时,它没有显示任何内存泄漏。</p>

<p>但每次我点击任何 UIButton 对象时,我都会分配更多内存(根据 Instruments)并且它会不断增长 - 从按钮“重新打开”相同类型的 UIScrollView 总是会增加更多内存分配。</p >

<p>如果我在模拟器中模拟内存警告,它会释放一些内存,然后我可以继续增加它。</p>

<p>所以这是我的问题:我是否应该费心尝试以某种方式手动解除分配?如果是这样,我应该在哪里实际执行此操作?我是 Obj-C 的新手,所以我认为我已经涵盖了大部分基础知识,但更高级的主题仍然需要一些帮助。</p>

<p>创建网格:</p>

<pre><code>UIScrollView *grid = [ initWithFrame:CGRectMake(0, 0, 1024, 768)];
[ addSubview:grid];
;
</code></pre>

<p>添加按钮(在 for 循环中):</p>

<pre><code>UIButton *slotItem = [ initWithFrame:CGRectMake(((float) slotWidth * j), ((float) slotHeight * i), (float) slotWidth, (float)slotHeight)];
;

UIWebView *buttonWebThumb = [ initWithFrame:CGRectMake(0, 0, slotWidth, slotHeight)];

];
;

objectAtIndex:1], htmlBottom] baseURL: bundlePath]]];
buttonWebThumb.scalesPageToFit = YES;
;
buttonWebThumb.userInteractionEnabled = NO;
buttonWebThumb.exclusiveTouch = NO;
;

;

;
</code></pre>

<p>showPages 方法然后创建另一个 UIScrollView 并在其中添加 1-10 个单独的 UIWebView,并向新的 UIScrollView 添加一个“关闭”按钮。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可能会看到这一点,因为您在离开之前没有从 View 中删除所有元素。</p>

<p>例如,如果您使用这样的方法退出 View ,请执行以下操作:</p>

<pre><code>- (id) viewExitAction: (id) sender {
id elem;
for(elem in buttons) {
    ;
}
// etc
}
</code></pre>

<p>这将自动将这些对象的保留计数减少到零。 (前提是您将它​​们添加到 View 中,然后按照您的预期释放它们。)</p>

<p>否则,<code>viewDidUnload</code> 和 <code>dealloc</code> 方法永远不会被调用。</p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 我应该什么时候释放内存,如果有的话?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6091032/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6091032/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 我应该什么时候释放内存,如果有的话?