Last time I tested this, it would get called more than once if an intermediate value that was holding the last reference to the next value got deallocated, because associated objects are released after properties, but I think that might not be the case anymore now that dealloc disposables are disposed at the start of the deallocation processes instead of the end.