菜鸟教程小白 发表于 2022-12-12 10:57:05

ios - 内存增加每次核心数据迭代


                                            <p><p>在遍历我的核心数据对象时出现内存问题。当它循环通过 CFData(存储)时,它会不断增加,直到应用程序崩溃。每次循环结束后核心数据不应该释放内存吗?</p>

<pre><code>for (Patient *patient in self.fetchedResultsController.fetchedObjects) {
    for (Exam *examForPatient in patient.exams) {
      //do stuff with examForPatient
    }
}
</code></pre>

<p>编辑 - 尝试了以下操作,但行为仍然相同:</p>

<pre><code>for (Patient *patient in self.fetchedResultsController.fetchedObjects) {
    for (Exam *examForPatient in patient.exams) {
      NSLog(@&#34;%@&#34;, );

      ;
    }
    ;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>当您不再需要某个项目驻留在内存中时,您可以刷新它。<br/>
来自文档:<br/>
<strong>“如果您迭代大量对象,您可能需要使用本地自动释放池 block 来确保尽快释放临时对象”</strong></p>

<p><strong>编辑:</strong>见@lnafziger回答</p>

<p><strong>注意:</strong>如果您正在更新患者对象或检查对象,则无法刷新它,因为您将丢失对它的所有更改(如果您使用 <code>mergeChanges:YES</code>不会释放其内存)。然后,您需要定期保存并刷新不再需要的对象。<br/> </p>

<p> <a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdPerformance.html#//apple_ref/doc/uid/TP40003468-SW4" rel="noreferrer noopener nofollow">See here</a>了解更多信息。<br/></p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 内存增加每次核心数据迭代,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/16533134/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/16533134/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 内存增加每次核心数据迭代