Co oznacza tutaj „Typ odbiorcy 'CALayer', na przykład komunikat jest deklaracją do przodu”?

119

Przenoszę blok kodu z projektu iOS4 na iOS5 i mam problemy z ARC. Kod generuje plik PDF ze zrzutu ekranu.

Kod generowania PDF

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

Linia renderInContext

[captureView.layer renderInContext:pdfContext];

generuje następujący błąd.

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

Jakieś pomysły, co tu się dzieje?

Jason George
źródło
Dla jasności, captureView to UIView?
NJones
Tak, prawdopodobnie powinienem był to dodać - captureView to UIView.
Jason George

Odpowiedzi:

316

Udało mi się skopiować twój problem. To właśnie naprawiło to dla mnie.

Dodaj QuartzCore.framework do swojego projektu i tę linię do swojego pliku .m.

#import <QuartzCore/QuartzCore.h>
NJones
źródło