如何正确清理内存(概念、SWIFT)

如何正确清理内存(概念、SWIFT),swift,memory,didreceivememorywarning,Swift,Memory,Didreceivememorywarning,我有一个循环,将对象(.append)添加到数组中,并在后台任务(dispatch_async(backgroundQueue,{)中一段时间后删除它们 在这个循环中,理论上我的数组中有最多的对象,因为我正在移除旧对象 我观察到的是,在收到didReceiveMemoryWarning警告并调用我的didReceiveMemoryWarning之前,内存消耗一直很高(超过400MB),有时应用程序会崩溃。因此,看起来我的清理工作不起作用,但 当停止在循环的中间并等待几秒钟(比如说10秒)时,我看

我有一个循环,将对象(.append)添加到数组中,并在后台任务(dispatch_async(backgroundQueue,{)中一段时间后删除它们 在这个循环中,理论上我的数组中有最多的对象,因为我正在移除旧对象

我观察到的是,在收到didReceiveMemoryWarning警告并调用我的didReceiveMemoryWarning之前,内存消耗一直很高(超过400MB),有时应用程序会崩溃。因此,看起来我的清理工作不起作用,但 当停止在循环的中间并等待几秒钟(比如说10秒)时,我看到内存慢慢地下降到我的预期值(60MB)。 所以我想我在概念上做错了

如何正确地做到这一点?有没有像JavaForceGC那样强制清理内存的方法


清理主任务中的对象时(dispatch_async(dispatch_get_main_queue(),{)内存没有达到限制,但GUI正在存储。

不确定,为什么不在使用完数组后立即将其丢弃。但无论如何,一个可能的问题是,您的代码在并发性方面不正确-例如:添加对象的代码与删除这些对象的代码在不同的队列上执行(除非两个队列具有相同的父队列)。请添加更多信息和代码。