¿Qué significa aquí "Tipo de receptor 'CALayer', por ejemplo, el mensaje es una declaración de reenvío"?

119

Estoy transfiriendo un bloque de código de un proyecto de iOS4 a iOS5 y tengo algunos problemas con ARC. El código genera un PDF a partir de una captura de pantalla.

Código de generación de PDF

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

La línea renderInContext

[captureView.layer renderInContext:pdfContext];

genera el siguiente error.

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

Alguna idea de lo que está pasando aquí?

Jason George
fuente
Para ser claros, ¿captureView es una UIView?
NJones
Sí, probablemente debería haber agregado eso: captureView es una UIView.
Jason George

Respuestas:

316

Pude duplicar tu problema. Esto es lo que me lo arregló.

Agregue QuartzCore.framework a su proyecto y esta línea a su archivo .m.

#import <QuartzCore/QuartzCore.h>
NJones
fuente