Установка содержимого CALayer для CGImageRef на iOS с ARC на - PullRequest
8 голосов
/ 20 декабря 2011

Следующий код прекрасно компилируется с ручным управлением памятью, но завершается ошибкой при ARC:

CALayer *layer = [CALayer layer];
layer.contents = [[UIImage imageNamed:@"dial.png"] CGImage];

Ошибка:

Проблема с автоматическим подсчетом ссылок: неявное преобразование не-Объективный-C указатель типа 'CGImageRef' (он же 'struct CGImage *') на 'id' запрещен с ARC

Как я могу запустить это с ARC?

Ответы [ 2 ]

18 голосов
/ 20 декабря 2011

Объекты CoreFoundation не управляются ARC.ARC работает только с объектами Objective-C и не знает, как передать владение при приведении (или к) типу указателя необъекта.

Вы должны сообщить ARC, как владение объектомпередано во время применения:

layer.contents = (__bridge id) [[UIImage imageNamed:@"dial.png"] CGImage];
1 голос
/ 20 декабря 2011

Просто приведите результат -CGImage к идентификатору, так как он жалуется на неявные преобразования ...

layer.contents = (id) [[UIImage imageNamed:@"dial.png"] CGImage];
...