2015-05-12 42 views
2

我一直在使用一个NSOperationQueue和我有一个很奇怪的内存问题。 我试图减少问题最简单的可能probleme,在这里我得到了:NSOperationQueue和内存

_queue = [[NSOperationQueue alloc] init]; 

后来:

在初始化

TestOperation op = [[TestOperation alloc] init]; 
[self.queue addOperation: op]; 
由主要的调用的方法

然后操作:

NSLog(@"I'm right here!"); 

如果我打电话这几千次,我的记忆使用强制不断增长。

我有我只取出的NSLog从我的方法(因此调用一个空方法),我的记忆不会改变。

我在做什么错在这里?

+0

是运算也是类的成员或它是一个函数内?我看到你声明队列就好像它在一个函数内部,但是你正在做类似self.queue的事情,我的意思是队列是类的一个属性。 – aichamorro

+0

是的,对不起,更正了,我只是试图把重要的线条放在这里。太快了。 – SeikoTheWiz

+0

你叫什么千次?你开始了你的操作队列吗?我嗅到你不停地将操作添加到你从未开始的队列中。 – MadNik

回答

0

当您添加一个操作的NSOperationQueue,操作队列拥有对象,并负责释放它的。也许你没有给NSOperationQueue足够的时间来释放内存并查看结果?

对于这种情况下,您可以用@autorelease块包围,但由于操作队列是一个负责的对象的版本,我不知道它是否会奏效。值得一试。

+0

我只是想了一些东西(尽管它不能解释为什么它不会改变空方法中的内存)。我的队列容量随着我存储在其中的同时操作的数量而增加。所以即使在处理完所有操作之后,所需的内存也不会改变。我想我需要找到一种方法来改变它的操作NSArray的能力。 – SeikoTheWiz