O que significa "Tipo de receptor 'CALayer', por exemplo, mensagem é uma declaração de encaminhamento" aqui?

119

Estou portando um bloco de código de um projeto iOS4 para o iOS5 e estou tendo alguns problemas com o ARC. O código gera um PDF a partir de uma captura de tela.

Código de geração de PDF

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

A linha renderInContext

[captureView.layer renderInContext:pdfContext];

gera o seguinte erro.

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

Alguma ideia do que está acontecendo aqui?

Jason George
fonte
Só para ficar claro, captureView é um UIView?
NJones
Sim, provavelmente deveria ter adicionado isso - captureView é um UIView.
18711 Jason Jason as

Respostas:

317

Consegui duplicar o seu problema. Foi isso que o corrigiu para mim.

Adicione QuartzCore.framework ao seu projeto e esta linha ao seu arquivo .m.

#import <QuartzCore/QuartzCore.h>
NJones
fonte