我们可以将 NSAutoreleasePool 用于视图吗?

发布于 2024-12-04 20:47:06 字数 150 浏览 0 评论 0原文

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

I want to know is there any way to use NSAutoreleasePool through a view (just like we define something in .h file and dealloc them in dealloc method of .m file).
Is it possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷…雨湿花 2024-12-11 20:47:06

不,不应该这样做。

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

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

和下一段

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

Nope, this shouldn't be done.

From Apple's autorelease pools documentation:

An autorelease pool should always be drained in the same context (such as the invocation of a method or function, or the body of a loop) in which it was created.

and the next paragraph

Autorelease pools are used “inline.” There should typically be no reason why you should make an autorelease pool an instance variable of an object.

浸婚纱 2024-12-11 20:47:06

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

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

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

Sure, you can. I am not sure if it makes sense in your situation, so you'll have to analyze that, but if you want:

In the .h file

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

In the .m file:

@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];
}

As I said, I am not sure if it makes sense, unless you allocate lots of small objects in your view.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文