On 2012-03-17, at 7:10 PM, G S wrote:

> If a Cocoa method name doesn't begin with “alloc”, “new”, “copy”, or 
> “mutableCopy”, then the returned object is autoreleased.
> 
> 
> Thanks, Dave.  That's what I thought.  But I don't understand why I need to 
> retain it then; it's assigned to a member pointer.  Why does it get released, 
> and when?  If I call retain on it, do I have to call release on it later?

If you are using manual retain-release semantics (not ARC or GC), then instance 
(member) variables are not retained. This means the object will be released 
whenever the autorelease pool is drained - probably at the end of the event 
cycle. So you should retain it (increasing its retain count), and then release 
it when you no longer need it (decreasing its release count and causing it to 
be deallocated).

> 
> I create another NSDate, on the stack, to hold "now" for use within that 
> function.  Do I need to retain that too?  If not, why not?

As long as it is used only within the function, it is safe to use the 
autoreleased object. You only need to retain it if you want to keep it around 
after the method returns.
_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to