Thông báo ví dụ “Loại người nhận 'CALayer' là một khai báo chuyển tiếp” nghĩa là gì ở đây?


119

Tôi đang chuyển một khối mã từ dự án iOS4 sang iOS5 và tôi đang gặp một số sự cố với ARC. Mã tạo tệp PDF từ ảnh chụp màn hình.

Mã tạo PDF

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

Dòng renderInContext

[captureView.layer renderInContext:pdfContext];

tạo ra lỗi sau.

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

Bất kỳ ý tưởng những gì đang xảy ra ở đây?


Nói rõ hơn, captureView là một UIView?
NJones

Có, có lẽ nên nói thêm rằng - captureView là một UIView.
Jason George

Câu trả lời:


316

Tôi đã có thể nhân bản vấn đề của bạn. Đây là những gì đã sửa nó cho tôi.

Thêm QuartzCore.framework vào dự án của bạn và dòng này vào tệp .m của bạn.

#import <QuartzCore/QuartzCore.h>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.