Вам нужно позвонить CFRelease(tokenizer);
, когда вы закончите с использованием токенизатора. См. Правила владения . Вы должны позвонить CFRelease(locale);
тоже.
Ваш синтаксис __bridge sentence
правильный. Я должен сказать, что Xcode верен примерно __bridge
и __bridge_transfer
большую часть времени. В вашем случае вы передаете ссылку на NSObject для использования с CF. У вас нет намерения передавать право собственности CF, поскольку вы считаете, что ARC отлично справляется с управлением объектами NSO. Поэтому, когда CFStringTokenizerCreate
завершено с использованием sentence
, он ничего не сделает для его освобождения. ARC освободит sentence
.
С другой стороны, если вы изменили его на __bridge_transfer
, вы сообщаете ARC, что передаете право собственности CF. Поэтому, когда вы закончите, ARC не освободит sentence
. Вы должны вызвать CFRelease(sentence);
, чтобы освободить его, что не является желательным поведением.