Что здесь означает «Тип получателя ‘CALayer’, например, сообщение является прямым объявлением»?

#objective-c #ios #core-animation #calayer #automatic-ref-counting

#objective-c #iOS #ядро-анимация #calayer #автоматический подсчет ссылок

Вопрос:

Я переношу блок кода из проекта iOS4 в iOS5, и у меня возникли некоторые проблемы с ARC. Код генерирует PDF-файл из снимка экрана.

Код генерации PDF

 UIView *captureView;
...
NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil);
UIGraphicsBeginPDFPage();
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
[captureView.layer renderInContext:pdfContext];
UIGraphicsEndPDFContext();  

Строка renderInContext

 [captureView.layer renderInContext:pdfContext];  

генерирует следующую ошибку.

 Automatic Reference Counting issue
Receiver type 'CALayer' for instance message is a forward declaration  

Есть идеи, что здесь происходит?

Комментарии:

1. Просто для ясности, captureView — это UIView?

2. Да, вероятно, следовало добавить, что —captureView — это UIView.

Ответ №1:

Я смог дублировать вашу проблему. Это то, что исправило это для меня.

Добавьте QuartzCore.framework в свой проект и эту строку в свой файл .m.

 #import <QuartzCore/QuartzCore.h>