Que signifie ici «Le type de récepteur 'CALayer', par exemple, le message est une déclaration de transfert»?

119

Je porte un bloc de code d'un projet iOS4 vers iOS5 et j'ai des problèmes avec ARC. Le code génère un PDF à partir d'une capture d'écran.

Code de génération PDF

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

La ligne renderInContext

[captureView.layer renderInContext:pdfContext];

génère l'erreur suivante.

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

Des idées sur ce qui se passe ici?

Jason George
la source
Pour être clair, captureView est un UIView?
NJones
Oui, j'aurais probablement dû ajouter cela - captureView est un UIView.
Jason George

Réponses:

316

J'ai pu dupliquer votre problème. C'est ce qui m'a résolu.

Ajoutez QuartzCore.framework à votre projet et cette ligne à votre fichier .m.

#import <QuartzCore/QuartzCore.h>
NJones
la source