Расширение комментария @fluchtpunkt, который действительно должен был быть ответом;)
ARC работает, определяя, во время компиляции, нужны ли объекты или нет - тогда он обрабатывает ваше сохранение / освобождениедля вас.
Если вы передаете объект как (void *)
, компилятор не может решить, что ему нужно сохранить этот объект, чтобы он мог быть освобожден, прежде чем вы его используете.
__bridge
явно указывает компилятору, что вы передаете «реальный» объект, но используете для этого void *
.
Однако может возникнуть риск утечки памяти, если вы не сообщите компилятору где-то ещечто вы сделали с объектом:)
Взгляните на http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/index.html и найдите ' _bridge', чтобы увидеть больше деталей.