0

我想知道有什么方法可以NSAutoreleasePool通过视图使用(就像我们在文件中定义一些东西,.hdealloc.m 文件的 dealloc 方法中定义它们一样)。
可能吗?

4

2 回答 2

1

不,不应该这样做。

来自 Apple 的自动释放池文档:

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

和下一段

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

于 2011-09-14T07:41:04.623 回答
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];
}

正如我所说,我不确定这是否有意义,除非您在视图中分配大量小对象。

于 2011-09-14T07:29:27.837 回答