Apa yang dimaksud dengan "Tipe penerima 'CALayer' misalnya pesan adalah deklarasi maju" di sini?

119

Saya mem-porting blok kode dari proyek iOS4 ke iOS5 dan saya mengalami beberapa masalah dengan ARC. Kode menghasilkan PDF dari tangkapan layar.

Kode Pembuatan PDF

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

Baris renderInContext

[captureView.layer renderInContext:pdfContext];

menghasilkan kesalahan berikut.

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

Ada ide apa yang terjadi di sini?

Jason George
sumber
Hanya untuk memperjelas, captureView adalah UIView?
NJones
Ya, mungkin seharusnya menambahkan bahwa - captureView adalah UIView.
Jason George

Jawaban:

316

Saya bisa menduplikasi masalah Anda. Inilah yang memperbaikinya untuk saya.

Tambahkan QuartzCore.framework ke proyek Anda dan baris ini ke file .m Anda.

#import <QuartzCore/QuartzCore.h>
NJones
sumber