菜鸟教程小白 发表于 2022-12-13 15:46:15

iphone - 内存警告后的 EXC_BAD_ACCESS


                                            <p><p>收到内存警告后,我的应用程序出现 EXC_BAD_ACCESS 问题。
这就是我测试的方式:
我写了一个简单的应用程序,它只分配内存但不释放它。在我分配了大量内存后,只剩下大约 14 MB 的可用内存,我切换到我的主应用程序。我立即在 didReceiveMemoryWarning 中收到内存警告。片刻之后,我的应用程序在一个在 UIButton 中设置图像的函数中崩溃:</p>

<pre><code>-(void)activateRecordButton
{
    UIImage *image = ;
    ;
}
</code></pre>

<p>我得到的错误是调用 setImage 的行上的 EXC_BAD_ACCESS(code=1, address=some_address)。
如果我评论这些行,我的应用程序会在另一个为 UIButton 设置图像的函数中崩溃。</p>

<p>这是我的 didReceiveMemoryWarning:</p>

<pre><code>- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn&#39;t have a superview.
    ;

    // Release any cached data, images, etc that aren&#39;t in use.
}
</code></pre>

<p>为什么会这样?这是因为没有更多的内存来加载图像,还是因为当其他应用分配了大量内存时,recButton 以某种方式被释放了?</p>

<p>我在 Iphone 4 ios 5.1.1 上运行</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>默认情况下,UIViewController 将在 <code>didReceiveMemoryWarning</code> 中释放其 View (如果可能)。如果您没有手动保留按钮,您的按钮也会被释放。</p>

<p><code>setImage</code> 然后在不存在的对象上调用,这将触发 <code>EXC_BAD_ACCESS</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 内存警告后的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/12130710/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/12130710/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 内存警告后的 EXC_BAD_ACCESS