Я использую ARC и путаюсь при использовании __bridge_transfer
. У меня есть свойство userName
следующим образом:
@property (nonatomic, retain) NSString *userName;
...
@synthesize userName = _userName;
...
CASE 1:
NSString *name = (__bridge_transfer NSString *)ABRecordCopyCompositeName(person);
self.userName = name;
CASE 2:
self.userName = (__bridge_transfer NSString *)ABRecordCopyCompositeName(person);
где person
имеет тип ABRecordRef
.
В CASE 1 ARC выпустит локальное имя переменной (согласно моему пониманию, исправьте меня, если я ошибаюсь), однако что произойдет в CASE 2? Должен ли я использовать __bridge
в CASE 2 ИЛИ CASE 2 не должен использоваться вообще? в CASE 2 с __bridge_transfer
или __bridge
, как сбалансировать счетчик ссылок?
в CASE 2, с __bridge_transfer
, ARC освободит объект (объект, который передается как аргумент setter (void)setUserName:(NSString *)userName
)?