什么时候发布'autorelease'的对象?

Mar*_*ark 6 objective-c

我正在开发iPhone,objective-c.当我们使用自动释放时,对象实际上何时被释放 - 当主自动释放池被释放时(即应用程序终止?),或者本地函数何时结束?例如,我想做这样的事情:

- (void) test
{
    MyObj* p = [[[MyObj alloc] init] autorelease];
    ...

    // is p 'released' here?
}

一旦函数退出,或者当该线程的自动释放池被释放时,'p'就会被释放吗?我认为这是当本地函数退出时,但我只是创建了自己的线程,并需要设置一个自动释放池,这让我第二次想到这实际发生的时间..

谢谢

Jon*_*hon 7

autoreleases对象在自动释放池的同时释放.因此,对于您的线程,它将在您释放池时释放.在主线程中,如果你不创建自己的,我相信自动释放池每次都会在运行循环中耗尽 - 但我有一段时间没有看过.