我想知道是否有任何方法可以通过视图使用NSAutoreleasePool
(就像我们在.h
文件中定义一些内容,并在.m文件的dealloc方法中定义它们dealloc
。
可能吗?
答案 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];
}
正如我所说,我不确定它是否有意义,除非你在视图中分配了很多小物件。