Adds a weak reference callback to an object.
Weak references are used for notification when an object is disposed. They are called "weak references" because they allow you to safely hold a pointer to an object without calling @ref ( @ref adds a strong reference, that is, forces the object to stay alive).
Note that the weak references created by this method are not thread-safe: they cannot safely be used in one thread if the object's last unref might happen in another thread. Use WeakRef if thread-safety is required.
Object to reference weakly
callback to invoke before the object is freed
extra data to pass to notify