Я выполняю большое количество NSOperation
задач, и мое приложение использует много памяти. Хотя он должен использовать совсем немного, он использует величины больше, чем должен, и я думаю, из Instruments, что это потому, что NSOperation
объекты не полностью освобождены. Код для моего NSOperation
подкласса таков:
- (id)initFromNode:(BKObject *)sender withNumber:(NSNumber *)number; {
self = [super init];
if (self) {
_number = [number retain];
_sender = [sender retain];
}
return self;
}
- (void)main {
[_sender go:_number];
}
- (void)dealloc {
[_number release];
_number = nil;
[_sender release];
_sender = nil;
[super dealloc];
}
Мои подозрения таковы, потому что в Instruments, когда я использую утилиту Allocations, она показывает огромные объемы данных для моего _NSOperationInternal
, а также для моих подклассов NSOperation
, но число живых байтов всегда равно общему Количество байтов Я также проверил утилиту Leaks, которая никогда не обнаруживает утечек памяти. Я осторожен при освобождении любых объектов операций после добавления их в очередь.
Я также застрял в блоке завершения, чтобы проверить, действительно ли он заканчивается, и я могу подтвердить, что, по крайней мере, некоторые из них это делают. Подтверждение того, что все они будут более трудоемкими, и данные в реальном времени в Инструментах должны немного снизиться, даже если бы только, скажем, 10% из них заканчивали.
Я в растерянности. Дайте мне знать, если какое-либо из моих пониманий того, что я делаю, отключено, или если было бы полезно больше кода. Знаете ли вы, что может происходить, что это использует больше памяти, чем следовало бы?