gpt4 book ai didi

objective-c - 在后台线程 Objective C 中销毁对象

转载 作者:搜寻专家 更新时间:2023-10-30 20:17:16 25 4
gpt4 key购买 nike

我有一个绝对巨大的数组(约 1000 万个对象,它们本身包含大量数据)。销毁此对象会导致主线程出现大约 5 秒的相当长的滞后。虽然这只是一个针对大量数据的测试用例,但我希望能够 A) 更好地销毁它或 B) 将其推到某个后台线程上使其死亡。我不太了解内存收集的运行时要求,但想要一个更好的解决方案来仅旋转 5 秒。

所以问题是如何销毁非常大的对象,而不会在主线程上面临长时间的析构函数等待。我正在使用 ARC 并且在合理的时间调用析构函数(设置为零)。还有其他人处理过这个吗?对于这种情况,是否有设计原则或其他策略。

这是我在分析过程中看到的内容

enter image description here

最佳答案

我能够让事情正常工作并在后台线程上发布,执行如下操作:

    __block MyHugeObject* lastResults = self.localHugeObject; //retain it for the block
self.localHugeObject = nil;//clear local copy

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
lastResults = nil;//release on a background thread
});

关于objective-c - 在后台线程 Objective C 中销毁对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com