У меня есть поток, который изменяет переданный указатель на объект (который alloc'd и сохраняется в вызывающем потоке) в цикле. Если я поместил указатель в пул автозапуска, иногда получаю ошибки, потому что объект освобождается, когда он не должен. Я вытащил его из автореферата, и это, похоже, сработало. Тем не менее, я беспокоюсь о утечке памяти, потому что, если я вообще не использую автореферат, я получаю серьезную утечку.Должен ли я оставить пройденные предметы/предметы из пула авторефератов?
-(void)my_thread:(NSArray*)parameters;
{
//keep this out of the autorelease pool
Object *theObject;
[[parameters objectAtIndex:2] getValue:&theObject];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//do stuff to theObject
[pool release];
}
Спасибо. Мне не обязательно выделять параметры. Мне просто нужно знать, включать ли его в пул автозапуска или нет. Похоже, я не должен, на ваш пример. Это имеет смысл, если это так, я просто хочу быть уверенным. – Synthetix
Параметры должны быть сохранены при вводе. Если вы автоматически оцениваете это или выпускаете его в теле этого метода, это совершенно не имеет значения, но вы должны это сделать или же произойдет утечка. – bbum