web-dev-qa-db-fra.com

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

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 ce qui se passe ici?

119
Jason George

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

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

#import <QuartzCore/QuartzCore.h>
317
NJones