Objective c 我们可以使用NSAutoreleasePool查看吗?

Objective c 我们可以使用NSAutoreleasePool查看吗?,objective-c,xcode,nsautoreleasepool,Objective C,Xcode,Nsautoreleasepool,我想知道是否有任何方法可以通过视图使用NSAutoreleasePool(就像我们在.h文件和dealloc中定义的.m文件的dealloc方法一样)。 可能吗 当然可以。我不确定这在你的情况下是否有意义,因此你必须对此进行分析,但如果你想: 在.h文件中 @interface MyView : UIView { NSAutoReleasePool *pool; } // rest of view 在.m文件中: @implementation MyView - (id) initX

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

可能吗

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

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

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

不,这不应该这样做

从苹果的文档中:

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

下一段呢

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


你在问什么?你想在你的班上有一个
NSAutoreleasePool
类型的属性/ivar吗?谢谢你的好答案,我试过了,但没有得到好的结果,所以现在我知道为什么它不起作用;)