作为标题。在调用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];
}
谢谢!
答案 0 :(得分:2)
没有。此方法使用为该实际运行循环调度的NSTimer,在您调用它的同一个线程/运行循环上执行提供的选择器 。你不必担心它。
答案 1 :(得分:0)
您需要创建自己的@autoreleasepool
的唯一实例是,如果您一次创建并自动释放大量对象。
在您的情况下,您的update
方法将在您创建的同一个线程/ runloop上调用,并且会在主@autoreleasepool
下愉快地进行。
NSObject文档中有一些关于您调用的特定方法的详细信息。