Несмотря на то, что существует «бесплатный» мост от NSString к CFStringRef, это не относится к NSString * к CFStringRef * из-за использования ARC (автоматического подсчета ссылок).Приведение CFStringRef * к NSString * требует использования __ bridge , поэтому
Pointer.new(:string)
не будет работать.Использование
Pointer.new_with_type('^{__CFString}')
- лучший способ получить этот указатель, а лучший способ найти эту информацию - просмотреть ошибку TypeError, которая генерируется при выборе неправильного типа.Например:
expected instance of Pointer of type `^{__CFString}', got `*' (TypeError)