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

macos – OS X应用程序的自动释放池在哪里创建并耗尽?,第1张

概述我正在为ARC重构我的OS X应用程序.打开main.m文件,我确信我会找到Autorelease Pool实例化和排空(比如iOS项目),但令我惊讶的是它不在那里. 所以我的第一个问题是: >主要的Autorelease Pool在哪里? 我的下一个问题是: >如果未创建主Autorelease Pool,是否需要创建它?或者以某种自动方式释放自动释放的对象? 您的main.m文件应该有以下调用 我正在为ARC重构我的OS X应用程序.打开main.m文件,我确信我会找到autorelease Pool实例化和排空(比如iOS项目),但令我惊讶的是它不在那里.

所以我的第一个问题是:

>主要的autorelease Pool在哪里?

我的下一个问题是:

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

解决方法 您的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应用程序的自动释放池在哪里创建并耗尽?全部内容,希望文章能够帮你解决macos – OS X应用程序的自动释放池在哪里创建并耗尽?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1002138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存