我们可以使用NSAutoreleasePool进行查看吗?

时间:2011-09-14 06:26:00

标签: objective-c xcode nsautoreleasepool

我想知道是否有任何方法可以通过视图使用NSAutoreleasePool(就像我们在.h文件中定义一些内容,并在.m文件的dealloc方法中定义它们dealloc
可能吗?

2 个答案:

答案 0 :(得分:1)

不,不应该这样做。

来自Apple的autorelease pools文档:

  

自动释放池应始终在创建它的相同上下文中(例如调用方法或函数或循环体)。

和下一段

  

自动释放池使用“内联”。通常应该没有理由将自动释放池作为对象的实例变量。

答案 1 :(得分:0)

当然,你可以。我不确定你的情况是否合理,所以你必须分析它,但是如果你想要的话:

在.h文件中

@interface MyView : UIView
{
    NSAutoReleasePool *pool;
}
// rest of view

在.m文件中:

@implementation MyView

- (id) initXYZ // whatever initializer you have...
{
    self = [super init...];
    if (self)
    {
        pool = [[NSAutoReleasePool alloc] init];
        // rest of initialization
    }
    return self;
}

- (void) dealloc
{
    // rest of dealloc
    [pool drain];
    [super dealloc];
}

正如我所说,我不确定它是否有意义,除非你在视图中分配了很多小物件。