Как создать локальный пул автоматического выпуска для экономии памяти? - PullRequest
6 голосов
/ 12 апреля 2009

Apple говорит, что это хорошая идея для экономии памяти. Как это будет выглядеть в коде?

1 Ответ

11 голосов
/ 13 апреля 2009

Обычно вам не нужно создавать пул автоматического выпуска, потому что система заботится об этом. Но иногда вам нужно сделать это. Обычно это большие петли. Код будет выглядеть так:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int i;    
for (i = 0; i < 1000000; i++) {    
  id object = [someArray objectAtIndex:i];
  // do something with object
  if (i % 1000 == 0) {
    [pool release];
    pool = [[NSAutoreleasePool alloc] init];
  }
}
[pool release];

Пулы автоматического выпуска сохраняются в виде стека: если вы создаете новый пул автоматического выпуска, он добавляется в верхнюю часть стека, и каждое сообщение автоматического выпуска помещает получателя в самый верхний пул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...