【问题标题】:Can we use NSAutoreleasePool for a view?我们可以使用 NSAutoreleasePool 来查看视图吗?
【发布时间】:2011-09-14 06:26:00
【问题描述】:

我想知道有什么方法可以通过视图使用NSAutoreleasePool(就像我们在.h 文件和dealloc 在.m 文件的dealloc 方法中定义它们一样)。
是否可以?

【问题讨论】:

  • 你在问什么?你想在你的班级中有一个NSAutoreleasePool 类型的属性/ivar吗?

标签: objective-c xcode nsautoreleasepool


【解决方案1】:

不,不应该这样做。

来自 Apple 的 autorelease pools 文档:

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

下一段

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

【讨论】:

  • 感谢 4 你的好答案,我试过了,但我没有得到好的结果,所以现在我知道为什么它不起作用了 ;)
【解决方案2】:

当然可以。我不确定这在您的情况下是否有意义,因此您必须对此进行分析,但如果您愿意:

在.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];
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2014-06-03
    • 2020-10-09
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2014-11-06
    相关资源
    最近更新 更多