我发现有三种情况:
1 – 在main.m中,从应用程序运行开始并在结束时排出,因此释放内存中的所有对象.
2 – 当您手动显式创建自动释放池并将其耗尽时
第三种情况是我要求的,对我来说有点混乱.
在我研究时,自动释放对象就像C中的自动变量一样,只存在于逻辑范围内(在函数体中).因此,我想在每个函数之后都有一个隐藏的[池排水];
但是,有人向我指出,我认为这不正确.苹果说,它在“事件”之后消失了.当用户点击按钮时,可能会发生该事件,例如重新加载表视图.
但是这些信息还不足以让人看到整体情况.你能否为我澄清一下,当一个游泳池完全耗尽物体时,比如NSArray * arr = [NSArray array];?
解决方法 该文档并未具体说明“主”自动释放池何时耗尽,但通常您可以假设它在应用程序的主事件循环结束时耗尽.以下是自动释放池的情况:
>应用程序启动时会创建自动释放池.
>创建另一个池时,它将添加到自动释放池堆栈的顶部.
>将自动释放发送到对象时,会将其添加到堆栈顶部的自动释放池中.
>当释放发送到自动释放池时,它会将释放发送到池中的任何对象.
#4通常在主事件循环结束时自动发生(对于主自动释放池).
NSAutoreleasePool
的文档包含更多信息,包括此相关信息:
总结The Application Kit creates an autorelease pool on the main thread at the beginning of every cycle of the event loop,and drains it at the end,thereby releasing any autoreleased objects generated while processing an event.
以上是内存溢出为你收集整理的ios – 自动释放池何时耗尽?全部内容,希望文章能够帮你解决ios – 自动释放池何时耗尽?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)