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?


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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.