Что здесь означает «Тип получателя '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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.