So I took out all the &quot;__unsafe_unretained&quot;&#x27;s I inserted and indeed, with optimizations enabled in my release mode, the calls were removed. However, my no-optimization debug build is unbearably unusable like this so I cannot justify making this change.