Always use __weak instead of __unsafe_unretained if available