2011-10-18 12 views
117

Estoy portando un bloque de código de un proyecto iOS4 a iOS5 y tengo algunos problemas con ARC. El código genera un PDF a partir de una captura de pantalla. Generación de código¿Qué significa "Receptor tipo 'CALayer' por ejemplo mensaje es una declaración directa" significa aquí?

PDF línea de

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

El 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í?

+0

Para que quede claro, captureView es una UIView? – NJones

+0

Sí, probablemente debería haber agregado eso - captureView es un UIView. –

Respuesta

317

Pude duplicar su problema. Esto es lo que me solucionó.

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

#import <QuartzCore/QuartzCore.h> 
+6

+1 ¡Excelente! Debería haber atrapado ese. ¡Gracias! –

+0

Cómo diablos sigo cometiendo este error ... ¡Gracias! –

+0

la respuesta es excelente, el mensaje de error del compilador de Xcode también es impresionante. – rockXrock

Cuestiones relacionadas