Re: [Vala] Behaviour of assigning object obtained via property (unowned) to strong reference



Thanks this helps.

On 10 June 2010 07:41, Abderrahim Kitouni <a kitouni gmail com> wrote:

Hi,
                  في ث، 08-06-2010 عند 18:41 +0930 ، كتب James Moschou:
Hi

I'm having trouble debugging my application, I'm getting references
suddenly
becoming null, and I'm finding the existing explanations surrounding
memory
management in vala confusing.

The explanation at http://live.gnome.org/Vala/ReferenceHandling has got:
Vala prevents you from assigning an unowned reference to a strong (i.e.
not unowned) reference. However, you can transfer the ownership to
another
reference with (owned)

But then the tutorial at http://live.gnome.org/Vala/Tutorial has got:
If the calling code is written as
Object o = get_unowned_ref();
Vala will try to either obtain a reference of or a duplicate of the
instance the unowned reference pointing to

Since I'm not getting compiling errors or warnings I assume that the
latter
is what's happening, but I still don't know exactly what's happening. Is
it
making a copy, increasing the ref count by 1 or transferring ownership?

1. Vala doesn't transfer ownership by default, you need to explicitly
use an (owned) cast.
2. If the class is ref counted, it'll increase its ref count
Else, if it is [Immutable] (e. g. string), it'll make a copy.
Else, it will tell you to explicitly call the copy method.

A strong reference should never become null by itself, so it's either an
unowned reference, or the function you're using returned null for some
reason.

HTH,
Abderrahim




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]