需要在performSelector:withObject:afterDelay之后调用NSAutoReleasePool?

时间:2012-08-10 06:30:11

标签: iphone ios

作为标题。在调用performSelector:withObject:afterDelay?

之后是否需要调用NSAutoReleasePool

我认为performSelector:withObject:afterDelay:不在主线程上,所以有必要添加自动释放池。这是对的吗?

例如:

[self  performSelector:@selector(update) withObject:nil afterDelay:0.1];

-(void) update {
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init]; // Is it necessary
...
[pool drain];
}

谢谢!

2 个答案:

答案 0 :(得分:2)

没有。此方法使用为该实际运行循环调度的NSTimer,在您调用它的同一个线程/运行循环上执行提供的选择器 。你不必担心它。

答案 1 :(得分:0)

您需要创建自己的@autoreleasepool的唯一实例是,如果您一次创建并自动释放大量对象。

在您的情况下,您的update方法将在您创建的同一个线程/ runloop上调用,并且会在主@autoreleasepool下愉快地进行。

NSObject文档中有一些关于您调用的特定方法的详细信息。