Automatic Retain Count, AVFoundation: Словарь, содержащий нецелевые объекты C.Как это сделать с ARC? - PullRequest
1 голос
/ 12 октября 2011

Я на самом деле конвертирую некоторые из моих исходных файлов в ARC. ARC очень хорош, экономит время и утечки памяти. На самом деле я пытаюсь преобразовать свой код AVFoundation и достиг своих пределов в одной очень специальной строке кода:

image = [CIImage imageWithCVPixelBuffer:pixelBuffer options:[NSDictionary dictionaryWithObject:colorSpace forKey:kCIImageColorSpace]];

«цветовое пространство» является типом CGColorSpaceRef или CGColorSpace *. CGColorSpace является структурой и не может быть преобразован в id. Я очень удивлен этим, потому что код всегда работал для меня (цветовое пространство используется CIImage правильно). Я не могу запустить компилятор, используя ARC, потому что цветовое пространство не является объектом C. Компилятор (использующий ARC) отказывается добавлять цветовое пространство в словарь.

Кто-нибудь знает, как заменить «цветовое пространство» внутри этого словаря, или как сказать компилятору, что с этим указателем цветового пространства можно использовать?

1 Ответ

2 голосов
/ 12 октября 2011

Используйте CFDictionaryRef, используя CFDictionaryCreate() вместо NSDictionary, а затем приведите его к NSDictionary, используя (__bridge_transfer NSDictionary *)

...