2015-05-12 44 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