#avfoundation #automatic-ref-counting
#avfoundation #автоматический подсчет ссылок
Вопрос:
На самом деле я конвертирую некоторые из моих исходных файлов в ARC. ARC очень хорош, экономит время и утечки памяти. На самом деле я пытаюсь преобразовать свой код AVFoundation и достиг своих пределов в одной особой строке кода:
image = [CIImage imageWithCVPixelBuffer:pixelBuffer options:[NSDictionary dictionaryWithObject:colorSpace forKey:kCIImageColorSpace]];
«Цветовое пространство» — это тип CGColorSpaceRef , он же CGColorSpace * . CGColorSpace является структурой и не может быть преобразован в id . Я очень удивлен этим, потому что код всегда работал для меня (цветовое пространство используется CIImage правильно). Я не могу запустить компилятор с использованием ARC, потому что цветовое пространство не является объектом objective C. Компилятор (использующий ARC) отказывается добавлять цветовое пространство в словарь.
Кто-нибудь знает, как заменить «цветовое пространство» внутри этого словаря или как сообщить компилятору, что можно использовать этот указатель цветового пространства?
Ответ №1:
Используйте CFDictionaryRef
using CFDictionaryCreate()
вместо an NSDictionary
, а затем преобразуйте его в NSDictionary
using (__bridge_transfer NSDictionary *)
Комментарии:
1. Ключевое слово «__bridge» устранило проблему. После того, как я повозился с этим, код на самом деле выглядит так: image = [CIImage imageWithCVPixelBuffer:Параметры пиксельного буфера: [NSDictionary dictionaryWithObject:(__bridge id) colorSpace forKey:kCIImageColorSpace]]; Большое спасибо 🙂