0

如题。调用 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];
}

谢谢!

4

2 回答 2

2

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

于 2012-08-10T06:32:33.107 回答
0

您需要创建自己的唯一实例@autoreleasepool是同时创建和自动释放大量对象。

在您的情况下,您的update方法将在您创建它时在同一个线程/运行循环上调用,并且会很高兴地落在 main 下@autoreleasepool

NSObject文档对您调用的特定方法有一些冗长的细节。

于 2012-08-10T06:52:26.470 回答