Always use __weak instead of __unsafe_unretained if available

I saw that this method was being used in other parts of the code, this commit makes it consistent throughout and fixes some crashes we ran into.