gpt4 book ai didi

ios - Autoreleasepool 仅在应用程序结束时耗尽?

转载 作者:行者123 更新时间:2023-12-01 17:51:18 26 4
gpt4 key购买 nike

在 ios 中,一个主要的自动释放池围绕着 UIApplicationMain。如果我没有在应用程序内手动设置其他自动释放池,这是否意味着每当我在应用程序中使用自动释放释放对象时,它实际上不会被释放,直到 UIApplicationMain 完成,池被耗尽,应用程序终止?

情况似乎就是这样,如果是这样,使用自动释放似乎是一个非常糟糕的主意。所有对象,即使只是出于临时原因创建,也会一直保留到应用程序结束,从而占用大量内存。

例如,我认为许多工厂方法都使用自动释放。使用工厂方法创建的所有内容是否仅在应用程序完成时才发布?

最佳答案

一点也不!UIApplicationMain为您的应用创建主运行循环。您可以将其视为处理当前队列中的消息并继续其下一次迭代的无限循环。
自动释放池会在每次运行循环迭代结束时排出所有自动释放的对象。这意味着,假设您的应用程序处理按钮上的触摸事件并在运行循环的单次迭代中重新加载表格 View 。然后在迭代完成后,所有同时创建的自动释放对象都将被耗尽。
运行循环仍将继续运行,直到应用程序运行并继续处理更多事件。
但是,如果您在应用程序中创建单独的线程,该线程将具有自己的运行循环,因此您有责任为您生成的任何新线程创建自动释放池。

关于ios - Autoreleasepool 仅在应用程序结束时耗尽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856837/

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