Take #2: Attempt to fix unreproducible crasher. Don't rely on auto-zeroing weak references to know when it's no longer OK to hand back a cached value.