NSRunLoop 和 NSAutoreleasePool,它们是如何交互的?
Posted
技术标签:
【中文标题】NSRunLoop 和 NSAutoreleasePool,它们是如何交互的?【英文标题】:NSRunLoop and NSAutoreleasePool, how do they interact? 【发布时间】:2011-12-28 06:33:28 【问题描述】:自动释放池将在运行循环结束时释放。
这是否意味着任何循环迭代的结束? 什么时候发生?
处理完每个触摸、动作或远程控制事件后, 池将被排干。
如果我们的应用程序不提供任何触摸怎么办?
如果我们使用这样的代码,我们如何确定对象没有被释放
[self someObject]
和 retain
在 someMethod
?
- (id) someObject
return [[[SomeClass alloc] init] autorelease];
- (void) someMethod
SomeClass * object = [[self someObject] retain];
【问题讨论】:
Obj-c autorelease a variable up a chain of methods 的可能重复项 【参考方案1】:从调用堆栈的角度来考虑。
在您上面给出的示例中,-someMethod
在从 -someObject
返回的值被保留并分配给 object
之前不会退出。
【讨论】:
以上是关于NSRunLoop 和 NSAutoreleasePool,它们是如何交互的?的主要内容,如果未能解决你的问题,请参考以下文章