gpt4 book ai didi

macos - OS X 应用程序的自动释放池在哪里创建和耗尽?

转载 作者:行者123 更新时间:2023-12-03 16:13:17 25 4
gpt4 key购买 nike

我正在为 ARC 重构我的 OS X 应用程序。打开 main.m 文件,我确信我会找到自动释放池实例化和耗尽(如 iOS 项目),但令我惊讶的是它不在那里。

所以我的第一个问题是:

  • 主自动释放池在哪里?

我的下一个问题是:

  • 如果未创建主自动释放池,我是否需要创建它?或者自动释放的对象是否以某种自动方式释放?

最佳答案

您的 main.m 文件应包含以下调用:

NSApplicationMain(argc, (const char **)argv);

NSApplicationMain()负责创建应用程序,即 NSApplication 的实例,它又负责创建自动释放池:

The NSApplication class sets up autorelease pools (instances of the NSAutoreleasePool class) during initialization and inside the event loop—specifically, within its initialization (or sharedApplication) and run methods.

这意味着,在一般情况下,您不必担心创建自动释放池,因为 NSApplication 已经在初始化和事件循环中执行了此操作。在某些情况下,创建自己的自动释放池可能是必要/可取的,例如具有创建许多自动释放对象的循环的方法。在这种情况下,为每个循环迭代提供一个自动释放池是一个好主意。

关于macos - OS X 应用程序的自动释放池在哪里创建和耗尽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164448/

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