首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NSAutoreleasePool

如何使用NSAutoreleasePool
EN

Stack Overflow用户
提问于 2011-11-23 07:45:35
回答 2查看 909关注 0票数 0

如果我使用NSAutoreleasePool,池中创建的每一个对象都不应该被手动释放?当池被耗尽时,它将被释放?

代码语言:javascript
复制
- (void) backgroundRequest{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

        urlList = [[NSMutableArray alloc] init];
        target = [[NSMutableArray alloc] init];
      {
    //do stuff in here  

    }
    [urlList release];
    [target release];

    [pool release];
}

上面的行是正确的还是我应该删除[urlList release][target release]?重要:我将等待一个解释和一个answer.Thank你

EN

回答 2

Stack Overflow用户

发布于 2011-11-23 07:49:49

只有当有使用自动释放方法的对象时,才能使用自动释放池。

如果你用这个:

代码语言:javascript
复制
urlList = [[NSMutableArray alloc] init];

然后你会想做你自己的发行,是的。但是,如果您这样做:

代码语言:javascript
复制
urlList = [[[NSMutableArray alloc] init] autorelease];

然后,您可以让NSAutorelease池处理这个问题。

票数 2
EN

Stack Overflow用户

发布于 2011-11-25 12:22:46

如果不想发布urlListtarget,那么可以使用以下代码:

代码语言:javascript
复制
- (void) backgroundRequest
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

        urlList = [[[NSMutableArray alloc] init] autorelease];
        target = [[[NSMutableArray alloc] init] autorelease];
      {
    //do stuff in here  

    }

    [pool release];
}

希望这能帮到你。

关键是,AutoreleasePool负责那些已经用关键字autorelease自动释放的分配,所以如果使用该关键字,就不需要释放它。它是在AutoreleasePool发布时发布的。

如果您需要更多的信息,请留言给我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8238717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档