thanks!

Perhaps my confusion comes from reading about autorelease pools in an 
objective-c books that focuses on command-line program.

So if I understood it correctly; 
(based on  
<http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html%23//apple_ref/doc/uid/20000047-CJBFBEDI>)
whenever I add an object to the autorelease pool or don't own the object it 
gets released automatically after an event cycle.

is that correct?

So I only have to worry about objects I own, that are objects I allocate with 
alloc
(I don't use new or copy anywhere).


On 15.05.2011, at 03:19, Nick Zitzmann wrote:

> 
> On May 14, 2011, at 5:43 PM, Martin Batholdy wrote:
> 
>> I still have trouble understanding the autorelease pool.
>> 
>> Lets assume an object Z has a method where it gets a string y and returns 
>> another string x.
>> 
>> Now when an instance of this object is created and the method is invoked,
>> x is returned and is used somewhere else.
>> 
>> Now this method of object Z should not be the owner of x right?
>> Because x is used elsewhere.
>> 
>> 
>> So I add x to the autorelease-pool to declare that I am not the owner (and 
>> won't send it a release message);
>> 
>> x = [[[NSString alloc] init] autorelease];
>> 
>> 
>> but where do I release the pool?
>> And to which pool is it added?
> 
> Pay attention to the memory management rules: 
> <http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html>
> 
>> I thought I would create my own pool in the init-method of Z and send it a 
>> [pool release] message in the alloc-method.
>> 
>> But I haven't seen that so far in sample code ...
> 
> Don't ever do that. You'll wind up popping objects that aren't supposed to be 
> popped yet, which will lead to a crash. Autorelease pools should never be 
> used as ivars, globals, or static variables.
> 
> In general, you shouldn't create your own autorelease pools, unless (1) you 
> are using NSThread or pthread to create new threads, or (2) you have written 
> a loop that generates a great deal of temporary objects that need to be 
> popped from time to time to keep memory usage from spiking, and you know what 
> you're doing.
> 
>> can someone explain me what happens when I add x to the autorelease pool?
> 
> Read the autorelease pools article in the memory management programming guide 
> (see link above) and it will clear things up.
> 
> Nick Zitzmann
> <http://www.chronosnet.com/>
> 
> 
> 

_______________________________________________

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

Reply via email to