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



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]