Alexander Michael | 18 Jul 16:17

Does a sync_trait connection prevent an object from being garbage collected?

If after setting up a sync_trait pair one side of the sync (the one
past in the argument to the sync_trait method) leaves scope with
nothing referencing it other than the sync_trait event handling (or
even gets explicitly deleted with the del operator) does the object
get garbage collected and the sync_trait connection removed? Or does
the sync_trait setup keep it dangling until I explicitly remove the
sync'ing with another call to sync_trait with remove=True?

I'm trying to figure out how explicit I need to be about setting up
and tearing down some wiring in my app in response to user
interactions that essentially reconfigure the object relationships.

Thanks,
Alex
David C. Morrill | 18 Jul 17:07

Re: Does a sync_trait connection prevent an object from being garbage collected?

Alexander Michael wrote:
> If after setting up a sync_trait pair one side of the sync (the one
> past in the argument to the sync_trait method) leaves scope with
> nothing referencing it other than the sync_trait event handling (or
> even gets explicitly deleted with the del operator) does the object
> get garbage collected and the sync_trait connection removed? Or does
> the sync_trait setup keep it dangling until I explicitly remove the
> sync'ing with another call to sync_trait with remove=True?
>
> I'm trying to figure out how explicit I need to be about setting up
> and tearing down some wiring in my app in response to user
> interactions that essentially reconfigure the object relationships.
>
> Thanks,
> Alex
>
> _______________________________________________
> Enthought-dev mailing list
> Enthought-dev@...
> https://mail.enthought.com/mailman/listinfo/enthought-dev
>
>   

By design, traits listeners (and sync_traits, which sets up some 
listeners) do not keep either party alive. You will have to save 
explicit references to objects if you want them to not be GC'ed...

Dave Morrill
Alexander Michael | 18 Jul 17:11

Re: Does a sync_trait connection prevent an object from being garbage collected?

On Fri, Jul 18, 2008 at 11:07 AM, David C. Morrill
<dmorrill@...> wrote:
> Alexander Michael wrote:
>> If after setting up a sync_trait pair one side of the sync (the one
>> past in the argument to the sync_trait method) leaves scope with
>> nothing referencing it other than the sync_trait event handling (or
>> even gets explicitly deleted with the del operator) does the object
>> get garbage collected and the sync_trait connection removed? Or does
>> the sync_trait setup keep it dangling until I explicitly remove the
>> sync'ing with another call to sync_trait with remove=True?
>>
>> I'm trying to figure out how explicit I need to be about setting up
>> and tearing down some wiring in my app in response to user
>> interactions that essentially reconfigure the object relationships.
>
> By design, traits listeners (and sync_traits, which sets up some
> listeners) do not keep either party alive. You will have to save
> explicit references to objects if you want them to not be GC'ed...

Great! I want them to be GC'ed without too much book keeping on my
part, so this is the answer both that I was hoping for and that I
thought was the case.

Thanks,
Alex

Gmane