菜鸟教程小白 发表于 2022-12-12 19:37:50

ios - iphone应用程序由于内存压力而崩溃


                                            <p><p>在我的 iphone 应用程序中,当发送一些数据包时,应用程序崩溃了,当数据包数量更多时,它会在 xcode 上发出警报,说由于内存压力而终止应用程序。在我的代码中的几个地方,我在 for 循环中分配了一些对象并将这些分配的对象添加到队列中,所以在添加之后我想在 for 循环中释放这些对象,<strong>因为它启用了 ARC 的项目</strong > 我无法释放它,我的问题是在这种情况下会有帮助吗?而不是释放它,如果我们将这些对象设置为 nil,它会释放内存(我知道 <strong>nil</strong> 不会减少保留计数)设置 nil 是否有助于减少内存使用?</p>

<p>说我的代码有点像下面的例子</p>

<pre><code>NSMutableArray* arrObj = [init];
for(i=0; i&lt;=count;i++)
{
ClassA * Obja = [initwithdata:xx];
ClassB * Objb = [initwithdata:xx];
ClassC * Objc = [initwithdata:xx];

; // Since its ARC we cant release obja will obja=nil this help?
; // Since its ARC we cant release objb will objb=nil this help?
; // Since its ARC we cant release objc will objc=nil this help?

}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>当你不再需要它们时,ARC 会自动释放它,你不必将它们设为 nil。</p>

<p>但是如果您有很多临时数据,您可以使用 <a href="https://developer.apple.com/library/mac/documentation/cocoa/conceptual/memorymgmt/articles/mmAutoreleasePools.html" rel="noreferrer noopener nofollow">Autorelease Pool Block</a> .</p>

<pre><code>while (x &lt; y){
   @autoreleasepool {
      // lot of temporary stuff
   }
}
</code></pre>

<p>你可以找到非常好的和简单的教程<a href="http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode" rel="noreferrer noopener nofollow">here</a>关于 Xcode Instruments 解决内存管理问题。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - iphone应用程序由于内存压力而崩溃,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22068142/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22068142/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - iphone应用程序由于内存压力而崩溃