Thanks
Thanks

Reputation: 40339

How do I create a local autorelease pool to save up memory?

Apple says that this is a good idea for saving memory. What would that look like in code?

Upvotes: 6

Views: 2554

Answers (1)

iPera
iPera

Reputation: 1073

Usualy you don't need to create autorelease pool, because system cares about this. But, sometimes you need to do this. It's usualy in big loops. Code would look like this:

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];

Autorelease pools are kept as a stack: if you make a new autorelease pool, it gets added to the top of the stack, and every autorelease message puts the receiver into the topmost pool.

Upvotes: 11

Related Questions