NSManagedObject, retain count and dealloc:

  • Hi again,

    I am unable to see a NSManagedObject go through the dealloc: method, even after its removal from the MOC. It seems these objects are created after a initWithEntity:insertIntoMOC: with an initial retain count of 2, and, of course, it is impossible to make the retain count (by honest means) drop below 2. Is this normal expected behavior?

    Thanks,
    Vincent
  • On Mon, 26 Apr 2010 23:14:04 +0200, vincent habchi said:

    > I am unable to see a NSManagedObject go through the dealloc: method,
    > even after its removal from the MOC. It seems these objects are created
    > after a initWithEntity:insertIntoMOC: with an initial retain count of 2,
    > and, of course, it is impossible to make the retain count (by honest
    > means) drop below 2. Is this normal expected behavior?

    Probably.  Why do you ask?  What do you want to do in dealloc?  Do you
    know about willTurnIntoFault?

    --
    ____________________________________________________________
    Sean McBride, B. Eng                <sean...>
    Rogue Research                        www.rogue-research.com
    Mac Software Developer              Montréal, Québec, Canada
  • Hi Vincent

    > I am unable to see a NSManagedObject go through the dealloc: method, even after its removal from the MOC. It seems these objects are created after a initWithEntity:insertIntoMOC: with an initial retain count of 2, and, of course, it is impossible to make the retain count (by honest means) drop below 2. Is this normal expected behavior?

    The docs state that the MOC retains a reference to the MO until it is saved, so with the reference you are holding, that should make 2.

    Joanna

    --
    Joanna Carter
    Carter Consulting
  • On Mon, Apr 26, 2010 at 2:14 PM, vincent habchi <vince...> wrote:
    > I am unable to see a NSManagedObject go through the dealloc: method, even after its removal from the MOC. It seems these objects are created after a initWithEntity:insertIntoMOC: with an initial retain count of 2, and, of course, it is impossible to make the retain count (by honest means) drop below 2. Is this normal expected behavior?

    As far as you're concerned, it's perfectly valid behavior for every
    object in your application to never see -dealloc called, ever. As long
    as you are playing by the memory management rules, you shouldn't care
    one whit about when -dealloc is called. Those who work with -finalize
    in a GC environment are already familiar with this drill.

    If your object is holding on to some resource which you need it to
    release, write a method called -invalidate or -letGoOfImportantThing
    or something and call that at a deterministic time.

    --Kyle Sluder
  • Le 27 avr. 2010 à 00:18, Kyle Sluder a écrit :

    > If your object is holding on to some resource which you need it to
    > release, write a method called -invalidate or -letGoOfImportantThing
    > or something and call that at a deterministic time.

    Understood. I'll do that. I must admit I have a tendency to free resources at dealloc:, but if this does not happen, I guess I have little other choice.

    Cheers
    Vincent
previous month april 2010 next month
MTWTFSS
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
Go to today