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<=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 < 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]