2011-10-18 21 views
117

Sto eseguendo il porting di un blocco di codice da un progetto iOS4 a iOS5 e ho qualche problema con ARC. Il codice genera un PDF da una cattura dello schermo.Che cosa significa "Tipo ricevitore" CALayer "per messaggio di istanza è una dichiarazione diretta" significa qui?

PDF Code Generation linea

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

Il renderInContext

[captureView.layer renderInContext:pdfContext];

genera il seguente errore.

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

Qualche idea cosa sta succedendo qui?

+0

Giusto per essere chiari, captureView è un UIView? – NJones

+0

Sì, probabilmente avrebbe dovuto aggiungerlo: captureView è un UIView. –

risposta

317

Sono stato in grado di duplicare il problema. Questo è ciò che ha risolto per me.

Aggiungi QuartzCore.framework al tuo progetto e questa linea al tuo .m file.

#import <QuartzCore/QuartzCore.h> 
+6

+1 eccellente! Avrei dovuto prenderlo. Grazie! –

+0

Come diamine sto ancora facendo questo errore ... Grazie! –

+0

la risposta è eccellente, il messaggio di errore del compilatore Xcode è anche fantastico. – rockXrock

Problemi correlati