2010-07-26 45 views
3

我有一段代码在应用程序加载时只会在后台运行一次。我不想担心NSOperationQueue *的内存管理问题,我可以autorelease吗?我可以自动释放NSOperationQueue吗?

NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
NSInvocationOperation *op = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(oneTimeTask) object:nil]; 
[queue addOperation:op]; 
[op release]; 
[queue autorelease]; 

感谢

回答

4

简短的回答是否定的,如果你想让它存在,直到您的应用程序退出。
如果您自动释放它,队列对象将在事件循环的下一个循环中释放(并重新分配),您可能不想要这些循环...

+0

我不需要它存在直到应用程序结束。我想在最后的'NSInvocationOperation'完成后清理它。 – ohho 2010-07-26 09:23:05

+0

然后在'NSOperation'对象上使用'isFinished'方法,并在所有操作完成时显式释放队列。如果您自动释放队列,则可能会在操作仍在运行或等待时释放该队列。 – Macmade 2010-07-26 09:34:07