Мостовое приведение передает что-то под контроль ARC или из него, но дает вам указатель, который, как предполагает ARC, сохраняется где-то еще.
Альтернатива 1 (уродливая)
Если вы используете обычный __bridge, вы не сможете освободить объект, пока не закончите с ним работать.
NSString *userMail = (__bridge NSString *) contactInfo;
[[SettingsHelper sharedInstance] setUserMail:userMail];
CFRelease(contactInfo);
Альтернатива 2 (хорошо)
Если вы используете __bridge_transfer, ARC отследит его для вас.
NSString *userMail = (__bridge_transfer NSString *) contactInfo;
[[SettingsHelper sharedInstance] setUserMail:userMail];
Резюме
Приведение __bridge следует использовать только для приведения типов с подсчетом ссылок к типам без подсчета ссылок. Например, между void * и NSString *. Вам нужно использовать его, например, для написания функций обратного вызова на C.
Преобразование __bridge_transfer позволит вам преобразовать один тип с подсчетом ссылок в другой, например, CFStringRef в NSString *.
person
Dietrich Epp
schedule
25.02.2013