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

119

Я портирую блок кода из проекта 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

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

Джейсон Джордж
источник
Чтобы было ясно, captureView - это UIView?
NJones
Да, наверное, следовало добавить это - captureView - это UIView.
Джейсон Джордж

Ответы:

316

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

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

#import <QuartzCore/QuartzCore.h>
NJones
источник