both allocate a new pool AND drain it each iteration of the loop while( 1 ) { pool = [ [ NSAutoReleasePool alloc ] init ]; // do stuff
[ pool drain ]; } On 22-May-2011, at 11:28 AM, Tony Romano wrote: > Unless I misread the documentation on drain, adding a [pool drain]will > cause the pool to be deallocated. I tried it anyways, and I get a couple > of emits in the console. > > // This message emits when a call to the getter is made > 2011-05-21 20:23:39.515 LeakyThread[5947:5707] *** > __NSAutoreleaseNoPool(): Object 0x10011d720 of class NSCFString > autoreleased with no pool in place - just leaking > > // This message emits when a call to pool drain is called. > 2011-05-21 20:23:39.515 LeakyThread[5947:5707] *** -[NSAutoreleasePool > drain]: This pool has already been drained, do not release it (double > release). > > > Still not sure what the problem is. > Tony Romano > > > > On 5/21/11 6:58 PM, "Ken Thomases" <k...@codeweavers.com> wrote: > >> On May 21, 2011, at 3:27 PM, Tony Romano wrote: >> >>> I am running into an issue using a synthesized getter in a thread. >>> Observing memory consumed by the application in Activity Monitor, memory >>> continues to grow ~200k per sample until the OS gives an Out Of Memory >>> warning. If I code my own getter, the app behaves as expected. I have >>> striped it down to basically one call as follows: >>> >>> -(void) process:(LeakyThreadAppDelegate *) myDelegate >>> >>> { >>> >>> NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; >>> >>> // Extract the object that contains the thread object >>> >>> SomeClass *obj = [myDelegate myClass]; >>> >>> NSLog(@"Thread Starting"); >>> >>> // Simplified to illustrate the problem >>> >>> while (1) { >>> >>> >>> >>> if ([[obj thread] isCancelled] == YES) { >>> >>> break; >>> >>> } >>> >>> } >>> >>> NSLog(@"Thread Cancelled"); >>> >>> [pool release]; >>> >>> } >>> >>> >>> Any clues as to what is wrong? Thanks In Advance. >> >> A synthesized getter is entitled to put objects into the autorelease >> pool. The above code does not drain the pool until after the thread is >> cancelled. Everything autoreleased before then just accumulates. Try >> draining the pool each iteration of the loop. >> >> Regards, >> Ken >> >> > > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > Please do not post admin requests or moderator comments to the list. > Contact the moderators at cocoa-dev-admins(at)lists.apple.com > > Help/Unsubscribe/Update your Subscription: > http://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org > > This email sent to r...@rols.org _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com